5 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超4個(gè)贊
只能說(shuō)沒有直接的API去刪除重復(fù)項(xiàng),但利用HashSet不能包含重復(fù)項(xiàng),可以去除list的重復(fù)項(xiàng)。
public static void removeDuplicate(List list) {
HashSet h = new HashSet(list);
list.clear();
list.addAll(h);
System.out.println(list);
}
上面這個(gè)方法能去除List的重復(fù)項(xiàng),但List原來(lái)的順序會(huì)被打亂。如果不想在去除重復(fù)項(xiàng)的時(shí)候,還想保持原有的順序,則可以用下面這種方式:
public static void removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iter = list.iterator(); iter.hasNext();) {
Object element = iter.next();
if (set.add(element))
newList.add(element);
}
list.clear();
list.addAll(newList);
System.out.println(list);
}
參考這里

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
不想要重復(fù)項(xiàng),應(yīng)該用Set吧,干嘛用List
補(bǔ)充:
拿自己寫一個(gè)也不累,來(lái)來(lái)來(lái):
List<String> origin = new ArrayList<>();
Set<String> handle = new HashSet<>();
//把origin里的所有元素放進(jìn)handle去,因?yàn)閔andle是Set類,會(huì)自動(dòng)去重
handle.addAll(al);
//把origin清空
origin.clear();
//再?gòu)膆andle里把去重之后的內(nèi)容都放回origin里
origin.addAll(handle);
這下你就high至了

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
添加回答
舉報(bào)