list刪除重復(fù)元素幾種思路
hashset
List<String> list2 = new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("a");
Set<String> set = new HashSet<>(list2);
for (String item : set) {
log.info("[{}]",item);
}
23:29:46.093 [main] INFO com.geekmice.sbeasypoi.service.impl.ds - [a]
23:29:46.105 [main] INFO com.geekmice.sbeasypoi.service.impl.ds - [b]
Stream流
distinct()是Java 8 中 Stream 提供的方法,返回的是由該流中不同元素組成的流。distinct()使用 hashCode() 和 eqauls() 方法來獲取不同的元素。
因此,需要去重的類必須實現(xiàn) hashCode() 和 equals() 方法。換句話講,我們可以通過重寫定制的 hashCode() 和 equals() 方法來達(dá)到某些特殊需求的去重。
List<String> list2 = new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("a");
list2=list2.stream().distinct().collect(Collectors.toList());
for (String item : list2) {
log.info("元素:[{}]",item);
}
23:31:49.434 [main] INFO com.geekmice.sbeasypoi.service.impl.ds - 元素:[a]
23:31:49.444 [main] INFO com.geekmice.sbeasypoi.service.impl.ds - 元素:[b]
刪除所有重復(fù)元素
思想:其實就是獲取非重復(fù)元素,將所有元素劃分為重復(fù)元素和正常元素,用兩個標(biāo)志位說明,1表示正常元素,超過1
的都是累加出來,文章來源:http://www.zghlxwxcb.cn/news/detail-629439.html
List<String> list2 = new ArrayList<>();
list2.add("a");
list2.add("b");
list2.add("a");
Map<String, Integer> cachedMap = new HashMap<>(16);
for (String item : list2) {
Integer count = cachedMap.get(item);
cachedMap.put(item, Objects.isNull(count) ? 0 : count + 1);
}
List<String> cachedList = new ArrayList(16);
for (Map.Entry<String, Integer> integerEntry : cachedMap.entrySet()) {
if (integerEntry.getValue() != 1) {
cachedList.add(integerEntry.getKey());
}
}
for (String content : cachedList) {
log.info("非重復(fù):[{}]", content);
}
23:38:59.454 [main] INFO com.geekmice.sbeasypoi.service.impl.ds - 非重復(fù):[b]
文章來源地址http://www.zghlxwxcb.cn/news/detail-629439.html
到了這里,關(guān)于list刪除重復(fù)元素幾種思路的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!