试图从结构中获取项目列表,避免大量的for循环和if,所以我想使用stream
例如,lets具有以下结构:
class House {
List<Family> familyList;
}
class Family {
List<Person> personList;
String someInfo;
}
class Person {
String name;
int age;
List<Item> itemList;
}
class Item{
String name;
}
我要创建:
List TestitemsFiltered=House1.FamilyList.Stream().FlatMap(f->f.PersonList.Stream().FlatMap(p->p.ItemList.Stream().Filter(Item->Item.Name.Equals(“Hammer”))).Collect(Collectors.ToList());
但两者都抛出了空指针
三个。变体我还不知道
kevin Edit:
检查:familiList包含几个名称为“item1”、“item2”、“item3”的item
List<Family> filteredFamilies = house1.familyList.stream()
.filter(f -> f.personList.stream()
.anyMatch(p ->p.itemList.stream()
.anyMatch(i -> i.name.equals("item1"))))
.collect(Collectors.toList());
for (Family family : filteredFamilies) {
for (Person p : family.personList) {
for (Item i : p.itemList) {
System.out.println(i.name);
}
}
}
结果:
item1
item2
item2
item3
item1
item2
item2
item3
筛选前:
我试了第一个代码:
List<Item> testItems = house1.familyList.stream()
.flatMap(f -> f.personList.stream()
.flatMap(p ->p.itemList.stream()))
.collect(Collectors.toList());
这段代码起作用了。似乎您没有在开始时初始化列表。因此我建议在构造函数中初始化它们,nullpointer
应该消失。此外,当列表为空时,不会出现nullpointer
。
此代码应返回每个族
,该族
具有一个人
和一个特定的项
:
String expectedItem = "test";
List<Family> families = house1.familyList.stream()
.filter(f -> f.personList.stream()
.anyMatch(p ->p.itemList.stream()
.anyMatch(i -> i.name.equals(expectedItem))))
.collect(Collectors.toList());
String expectedItem = "test";
List<Family> families = house1.familyList.stream()
.filter(f -> f.personList.stream()
.anyMatch(p ->p.itemList.stream()
.allMatch(i -> i.name.equals(expectedItem))))
.collect(Collectors.toList());
我正在制作一个过滤器,允许我生成一个映射,其值是文件列表,为此,我尝试使用流。我有以下文件列表示例: null 这段代码只是使用键将CLA文件保存在映射中的列表中。这是正确的,但我需要添加其余的文件。
我需要过滤一个列表
本文向大家介绍Kotlin 筛选列表,包括了Kotlin 筛选列表的使用技巧和注意事项,需要的朋友参考一下 示例
列表筛选可以对地图中的数据按照事先设置好的列表模板进行查询。在第一次点击列表筛选时,会进入筛选定制页面,如下图: 点击确认后,开始进行筛选设置:点击新增按钮,可对某个字段添加筛选要求,添加后然后选择条件旁边加号按钮,以设置对某一列的具体筛选要求。 如上图的筛选条件为“名称包含迪亚”的售点,继续单击加号可以对名称列继续添加条件。如果需要对其他字段进行筛选,可以再次单击新增按钮增加条件,点击确定及保存
我有一个产品集合,每个产品都会有: 价格 属性(例如:大小:xl,s,xxl;颜色:黄,红,蓝;....) 制造商 类别(一个产品可以有多个类别) 此集合在ElasticSearch中索引。现在,当我查询类别A中所有产品的列表时,我还希望获得: 所有产品的价格范围(最小-最大) 所有可能选项和值的列表(大小、颜色和相应的值xl、s、xxl、Yellog、red、blue) 制造商(耐克、阿迪达斯、
我使用的是spring,我用定义了bean。它是一个包含对象的列表。 这是我的数据privider类: 在configuration类中,我从创建了-它可以工作。 在服务中,我想从列表中修改一个对象,该对象与令牌字符串匹配,并且已将设置为。 这条小溪运行良好。现在,当有人为已确认的对象调用方法两次时,我希望抛出。我怎么能用这条小溪做到这一点呢?我可以将放在哪里? 编辑: 我现在的解决方案。我使用而