gpt4 book ai didi

java - 如何根据 Java 中的几个条件从列表中删除重复项

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:53 25 4
gpt4 key购买 nike

我有一个航类对象列表,该对象有 id(长整型)和目的地(字符串)。我需要做的是删除相同 ID 的重复条目。但条件是删除那些元素,我只能保留具有最长目标列表的元素。

Flight{
Long id;
String destination;
}

列出航类 <- 这是必须根据条件过滤的内容。

列表示例:

flight1 -> id:456 , destination LON/DXB
flight2 -> id:456 , destination LON/DXB/IND
flight3 -> id:465 , destination LON/DXB/IND/CMB
flight4 -> id:555 , destination LON/DXB
flight5 -> id:666 , destination DXB/SHJ
flight6 -> id:666 , destination DXB/SHJ/BOM

根据给出的条件,我只能保留在列表中的是:flight3,flight4,flight6。其他航类不能在列表中。我怎样才能完成这个?

最佳答案

您可以做的是创建一个映射,使 id 和实例之间建立关系。

在遍历列表时,您检查 map 中是否存在具有相同 ID 的实例。如果不是这种情况,您只需添加映射,否则您比较目的地的长度(或您想要比较的任何内容)并在必要时更新映射。

Map<Long, Flight> map = new HashMap<>();
for(Flight f : flights) {
if(map.containsKey(f.id)) {
if(map.get(f.id).destination.length() < f.destination.length()) {
map.put(f.id, f);
}
} else {
map.put(f.id, f);
}
}

//you can even store them in a set
List<Flight> longestDestinationFlights = new ArrayList<>(map.values());

关于java - 如何根据 Java 中的几个条件从列表中删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31612313/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com