Java 返回仅包含当前可用菜单项的菜单项的新ArrayList
这就是我目前所拥有的 我对如何使用我也尝试过的方法进行比较感到困惑 1.items.get(i).available()==true 也可以使用.equalsJava 返回仅包含当前可用菜单项的菜单项的新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;
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;