给定一个像这样的数组列表:
List<Integer[]> list = new Arraylist<>();
list.add(new Integer[] {13, 1});
list.add(new Integer[] {100, 2});
list.add(new Integer[] {143, 2});
list.add(new Integer[] {185, 3});
list.add(new Integer[] {111, 3});
list.add(new Integer[] {98, 4});
如何使列表的第二个元素与第一个元素的值最低?
通常,我只是将列表转换为集合,然后再次将其作为列表返回,但如何处理这种情况?
提前致谢!
最佳答案
我不确定这是否是最好的解决方案,但您仍然可以使用一组找到的值并这样做:
Set<Integer> found=new HashSet<>();
list.removeIf(p->!found.add(p[1]));
这个想法是您无论如何都需要存储找到的值。您可以将过滤器与流 Api 一起使用,但保持状态比较困难,并且您可能仍然需要使用已添加的值维护另一个集合。所以我认为这是一个简单的解决方案。
如果您将其作为给定值,则第一个值始终为 100。否则您可能需要稍微修改一下;)
关于java - 通过第二个元素统一数组的 Arraylist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49940279/