亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

List去除重復數據問題

List去除重復數據問題

森林海 2019-03-14 14:15:13
List存放了{1,2} {2,3} {3,2}我只想輸出{1,2} {2,3}
查看完整描述

7 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

public class dropList {


public static void main(String[] args) {

    String[][] mylist = new String[][]{{"1","2"},{"3","2"},{"2","3"}};

    List<String[]> list = Arrays.asList(mylist); 

    TreeSet<String[]> ts  = new TreeSet<String[]>(new Comparator<String[]>(){


        @Override

        public int compare(String[] o1, String[] o2) {

            TreeSet<String> set1 = new TreeSet<String>(Arrays.asList(o1));

            TreeSet<String> set2 = new TreeSet<String>(Arrays.asList(o2));

            Collection<String> sub =  CollectionUtils.disjunction(set1, set2);

            if (sub.size()==0) {

                return 0;

            }

            String p = sub.iterator().next();

            if(set1.contains(p)){

                return 1;

            }

            return -1;

        }


    });


    ts.addAll(list);

    for(String[] temp : ts ){

        System.out.println(Arrays.toString(temp));

    }

}

}


查看完整回答
反對 回復 2019-04-26
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

treeSet {treeSet ,treeSet}


查看完整回答
反對 回復 2019-04-26
?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

數據結構的基本知識,請使用Set或其相關子類。


查看完整回答
反對 回復 2019-04-26
?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

關鍵在于list中放的是什么類型的對象。比如HashMap,HashSet還是其他什么類型,
{1,2}和{2,3}是數組還是什么?

查看完整回答
反對 回復 2019-04-26
?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

把{1,2} {2,3} {3,2} 轉成HashSet,{2,3}和{3,2}應該就一樣了


查看完整回答
反對 回復 2019-04-26
?
一只甜甜圈

TA貢獻1836條經驗 獲得超5個贊

我還是直接給你貼代碼吧,基本思路就是根據Set中的數據不能重復實現的……
[code]
/**
* list去重復
* @param list
* @return
*/
public static List removeDuplicateWithOrder(List list) {
Set set = new HashSet();
List newList = new ArrayList();
for (Iterator iterator = list.iterator(); iterator.hasNext();) {
BorrowedRecord record = iterator.next();
String objectId = record.getObjectId();
if (set.add(objectId))
newList.add(record);
}
return newList;
}

查看完整回答
反對 回復 2019-04-26
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

如果是我,我會這樣做:

首先,重寫 List 中的對象的 equals 方法。List 中的對象:{1,2}、{2,3}、{3,2},定義為:

[code="java"]
public class MyObj{
int key1;
int key2;

//get/set 方法,略

//下面的方法,把 {2,3} 和 {3,2} 判斷為相等
public boolean equals(Object obj) {
...
}
[/code]

然后,新建一個空的 LinkedHashSet,把 list 中的數據用 addAll 方法全部加入進去(這里,加入過程中,set 會判斷并發現 {2,3}{3,2} 相等,就不會把后面的對象加入到 set 中,而只保留前面一個。用 LinkedHashSet 是為了保持 list 一樣的順序,如果不關心順序,直接用 HashSet 即可);

最后,把 list 用 clear 方法清空,再把 set 的內容全部加入到 list 中去。這樣,list 中就是一個沒有重復元素的列表了。


查看完整回答
反對 回復 2019-04-26
  • 7 回答
  • 0 關注
  • 479 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號