猿问

List去除重复数据问题

List存放了{1,2} {2,3} {3,2}
我只想输出{1,2} {2,3}

森林海
浏览 456回答 7
7回答

慕村9548890

public class dropList {public static void main(String[] args) {&nbsp; &nbsp; String[][] mylist = new String[][]{{"1","2"},{"3","2"},{"2","3"}};&nbsp; &nbsp; List<String[]> list = Arrays.asList(mylist);&nbsp;&nbsp; &nbsp; TreeSet<String[]> ts&nbsp; = new TreeSet<String[]>(new Comparator<String[]>(){&nbsp; &nbsp; &nbsp; &nbsp; @Override&nbsp; &nbsp; &nbsp; &nbsp; public int compare(String[] o1, String[] o2) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TreeSet<String> set1 = new TreeSet<String>(Arrays.asList(o1));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TreeSet<String> set2 = new TreeSet<String>(Arrays.asList(o2));&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Collection<String> sub =&nbsp; CollectionUtils.disjunction(set1, set2);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (sub.size()==0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return 0;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String p = sub.iterator().next();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(set1.contains(p)){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return 1;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });&nbsp; &nbsp; ts.addAll(list);&nbsp; &nbsp; for(String[] temp : ts ){&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(Arrays.toString(temp));&nbsp; &nbsp; }}}

aluckdog

treeSet {treeSet ,treeSet}

慕的地8271018

数据结构的基本知识,请使用Set或其相关子类。

撒科打诨

关键在于list中放的是什么类型的对象。比如HashMap,HashSet还是其他什么类型,{1,2}和{2,3}是数组还是什么?

犯罪嫌疑人X

把{1,2} {2,3} {3,2} 转成HashSet,{2,3}和{3,2}应该就一样了

一只甜甜圈

我还是直接给你贴代码吧,基本思路就是根据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;}

慕标琳琳

如果是我,我会这样做:首先,重写 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 中就是一个没有重复元素的列表了。
随时随地看视频慕课网APP

相关分类

Java
我要回答