在Java对象列表中显示重复的属性值一次
我有一个java对象列表,如下所示在Java对象列表中显示重复的属性值一次,java,list,java-8,Java,List,Java 8,我有一个java对象列表,如下所示 我想将它转换为一个列表,其中第一个对象只有一次“相机闪光灯故障”和“相机外壳损坏”,如下所示。 这里提到的解决方案可以做些什么? 我举了一个员工的例子,他们有一些重复的id 假设您有一个列表作为 List<Employee> employee 您可以将所有属性添加到集合(集合不允许重复),如果该值已在集合中,则方法add返回false,因此您可以设置为清空对象中的属性: Set<String> values = new Has
我想将它转换为一个列表,其中第一个对象只有一次“相机闪光灯故障”和“相机外壳损坏”,如下所示。
这里提到的解决方案可以做些什么?
我举了一个员工的例子,他们有一些重复的id 假设您有一个列表作为
List<Employee> employee
您可以将所有属性添加到
集合
(集合不允许重复),如果该值已在集合中,则方法add
返回false,因此您可以设置为清空对象中的属性:
Set<String> values = new HashSet<>();
for (MyObject obj : myList) {
if (!values.add(obj.getValue())) {
obj.setValue("");
}
}
具有唯一值的集合表示您正在查找集合:
newhashset(list)
为什么要清除第一个属性?这让你烦恼吗?这背后有什么问题?它看起来是一个很好的候选对象。你真的认为,根据一个列表中的位置以这种方式修改对象是一个好主意吗?如果这些对象也以不同的顺序包含在不同的列表中,会发生什么?如果从列表中删除第一个对象会怎么样?这是为了显示,要求只显示一次属性值。我从数据库中获取这些对象,按第一列排序,然后按第二列排序。因此,所有这些都将分组到一起,并学习1890年●1.●3.●15我不想删除具有相同属性值的对象,我想保留它们,但要使属性值为空,就像我发布的第二个列表中那样。这并不意味着这些对象是重复的,它有更多的属性,这些属性可能有不同的值。你的第二个解决方案是以所需的方式给我第一列的列表,但令人惊讶的是,它抛出的java.sql.SQLSyntaxErrorException:ORA-00942:table或view在尝试使用该列表时并不存在,即使没有进一步的数据库获取。我正在处理取回后的列表。
Set<String> values = new HashSet<>();
for (MyObject obj : myList) {
if (!values.add(obj.getValue())) {
obj.setValue("");
}
}
myList.stream()
.collect(Collectors.groupingBy(MyObject::getValue))
.forEach((k, v) -> v.stream().skip(1).forEach(o->o.setValue("")));