Java 如何通过以下方式从ArrayList获取具有相同对象属性的对象列表
如何使用object属性检索ArrayList中所有对象的列表 型号类别:Java 如何通过以下方式从ArrayList获取具有相同对象属性的对象列表,java,arraylist,collections,Java,Arraylist,Collections,如何使用object属性检索ArrayList中所有对象的列表 型号类别: public class Item { private String id; private String name; } ArrayList items=new ArrayList() 现在,我们如何搜索具有特定名称的ArrayList 例如:获取所有名为“Sam”的对象。您可以执行以下操作: List<Item> itemsNamedSam = items.stream() .filte
public class Item {
private String id;
private String name;
}
ArrayList items=new ArrayList()代码>
现在,我们如何搜索具有特定名称的ArrayList
例如:获取所有名为“Sam”的对象。您可以执行以下操作:
List<Item> itemsNamedSam = items.stream()
.filter(item -> item.name.equals("Sam"))
.collect(Collectors.toList())
List itemsnamesam=items.stream()
.filter(item->item.name.equals(“Sam”))
.collect(收集器.toList())
几点注意:
- 您可能应该将
项中的字段设置为私有。例如,就目前情况而言,您可能会意外更改名称
字段
- 在大多数情况下,我们应该使用
List
(接口),而不是ArrayList
(实现)
您可以执行以下操作:
List<Item> itemsNamedSam = items.stream()
.filter(item -> item.name.equals("Sam"))
.collect(Collectors.toList())
List itemsnamesam=items.stream()
.filter(item->item.name.equals(“Sam”))
.collect(收集器.toList())
几点注意:
- 您可能应该将
项中的字段设置为私有。例如,就目前情况而言,您可能会意外更改名称
字段
- 在大多数情况下,我们应该使用
List
(接口),而不是ArrayList
(实现)
在@Alex的评论的帮助下,我最终做的是:
public static List<Item> findItemsByName(Collection<Item> listItems, String name) {
return listItems.stream().filter(item -> name.equals(item.getName()))
.collect(Collectors.toList());
}
公共静态列表findItemsByName(集合列表项,字符串名称){
返回listItems.stream().filter(item->name.equals(item.getName()))
.collect(Collectors.toList());
}
在@Alex评论的帮助下,我最终做的是:
public static List<Item> findItemsByName(Collection<Item> listItems, String name) {
return listItems.stream().filter(item -> name.equals(item.getName()))
.collect(Collectors.toList());
}
公共静态列表findItemsByName(集合列表项,字符串名称){
返回listItems.stream().filter(item->name.equals(item.getName()))
.collect(Collectors.toList());
}
您可以使用removeIf方法从列表中删除所有没有“Sam”名称的元素:
itemsNamedSam.removeIf(item -> !item.name.equals("Sam"));
您可以使用removeIf方法从列表中删除所有没有“Sam”名称的元素:
itemsNamedSam.removeIf(item -> !item.name.equals("Sam"));
items.stream()。谢谢你,Alex。你想用这个来写答案吗?items.stream().filter(item->“Sam.equals(item.name)).collect(Collectors.toList())
@Alex是的,成功了。谢谢,亚历克斯。你想用这个写答案吗?是的。好的,我会把它们换成私人的。有什么理由使用列表而不是ArrayList吗?谢谢你的帮助。@Lenzman这是软件工程中的一个原则——对变化的弹性。示例1:如果在Java 18中,列表
将有一个超级高效的实现,那么您将不得不在许多地方替换数组列表
,而不仅仅是在初始化列表的地方。如果您使用了一些未出现在列表中的方法,则情况会更糟。示例2:需求可能会发生变化,您可能不需要使用get(5)
,而只需要按顺序遍历列表并添加项。在这种情况下,LinkedList
可能更合适。明白了。谢谢你最需要的兔子。好的,我会把它们换成私人的。有什么理由使用列表而不是ArrayList吗?谢谢你的帮助。@Lenzman这是软件工程中的一个原则——对变化的弹性。示例1:如果在Java 18中,列表
将有一个超级高效的实现,那么您将不得不在许多地方替换数组列表
,而不仅仅是在初始化列表的地方。如果您使用了一些未出现在列表中的方法,则情况会更糟。示例2:需求可能会发生变化,您可能不需要使用get(5)
,而只需要按顺序遍历列表并添加项。在这种情况下,LinkedList
可能更合适。明白了。谢谢最需要的兔子谢谢你的信息谢谢你的信息