Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 返回仅包含当前可用菜单项的菜单项的新ArrayList_Java - Fatal编程技术网

Java 返回仅包含当前可用菜单项的菜单项的新ArrayList

Java 返回仅包含当前可用菜单项的菜单项的新ArrayList,java,Java,这就是我目前所拥有的 我对如何使用我也尝试过的方法进行比较感到困惑 1.items.get(i).available()==true 也可以使用.equals public boolean available() { return myAvailability; } //方法 ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items.size()); int i = 0;

这就是我目前所拥有的

我对如何使用我也尝试过的方法进行比较感到困惑 1.items.get(i).available()==true 也可以使用.equals

  public boolean available() { return myAvailability; } 
//方法

  ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items.size());
      int i = 0;
    while (i < availableItems.size())
    {
         boolean c = items.get(i).available();
        if (c == true)
        {
            availableItems.add(items.get(i));
            i++;
        }
        i++;

    }
    return  availableItems ;
arraylistavailableItems=newarraylist(items.size());
int i=0;
而(i
//主要

ArrayList<MenuItem> items = new ArrayList<MenuItem>();
        items.add( new MenuItem( "Big Bad Burger", 9.95, 2.15, 1, false ) );
        items.add( new MenuItem( "Cheeky Chicken", 5.95, 0.75, 1, true ) );
        items.add( new MenuItem( "Wild Wings", 5.95, 0.50, 0, false ) );
        items.add( new MenuItem( "Flying Fish", 15.95, 7.61, 1, false ) );
        items.add( new MenuItem( "Igloo Icecream", 1.95, 0.28, 2, true ) );

        ArrayList<MenuItem> available = availableItems( items );
        System.out.println(available);

        // should list:
        // Cheeky Chicken ($5.95) and Igloo Icecream ($1.95)
        for ( MenuItem item : available )
          System.out.println( item.menuString() );
ArrayList items=new ArrayList();
添加(新菜单项(“大坏汉堡”,9.95,2.15,1,false));
添加(新菜单项(“厚脸皮鸡”,5.95,0.75,1,真值));
添加(新菜单项(“野生翅膀”,5.95,0.50,0,false));
添加(新菜单项(“飞鱼”,15.95,7.61,1,假));
添加项目(新MenuItem(“冰屋冰淇淋”,1.95,0.28,2,真实值));
ArrayList available=可用项(items);
System.out.println(可用);
//应列出:
//厚脸皮鸡肉(5.95美元)和冰屋冰淇淋(1.95美元)
用于(菜单项:可用)
System.out.println(item.menuString());
公共静态列表getAvailableItems(列表项){
List availableItems=new ArrayList();
用于(菜单项:项)
if(item.available())
可用项。添加(项);
返回可用项;
}

公共静态列表getAvailableItems(列表项){
returnitems.stream()
.filter(菜单项::可用)
.collect(Collectors.toList());
}
错误在这里:

while (i < availableItems.size())

虽然比原来的方法干净得多,但为什么这会产生与OP编写的方法不同的结果?虽然有效,但您能否解释为什么可用items.add(items.get(i));不起作用?捕捉得好,并且很好地使用了
removeif
!我能请人把答案格式化吗?我想不出一种既有列表又有代码的方法。当我有一个列表时,代码不能正确显示。谢谢你的解释@MatteoNNZ,谢谢你的格式化!真奇怪,我相信我试过你做的事。也许我忘了一些空行,没问题。当您位于列表下方时,所有内容都会移动4个空格。因此,由于这样的代码格式有4个空格,当它位于列表项下面时,应该将其移动8个空格。
public static List<MenuItem> getAvailableItems(List<MenuItem> items) {
    return items.stream()
                .filter(MenuItem::available)
                .collect(Collectors.toList());
}
while (i < availableItems.size())
ArrayList<MenuItem> availableItems = new ArrayList<MenuItem>(items);
availableItems.removeif(item -> !item.available());
return availableItems;