如何根据自定义java对象而不是基本类型从列表中删除重复项?

Wow*_*Bow 15 java list arraylist set

在我发布这个问题之前,我在这里发现了类似的问题.但答案是基于一个字符串.但是,我在这里有不同的情况.我不是要删除String而是另一个名为AwardYearSource的对象.该类有一个名为year的int属性.所以我想删除基于年份的重复项.即如果有不止一次提到的2010年,我想删除该AwardYearSource对象.我怎样才能做到这一点?

Lou*_*man 51

基于字段删除元素的最简单方法如下(保留顺序):

Map<Integer, AwardYearSource> map = new LinkedHashMap<>();
for (AwardYearSource ays : list) {
  map.put(ays.getYear(), ays);
}
list.clear();
list.addAll(map.values());
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,`<>`语法仅适用于Java 7. (5认同)