List集合去重复
2016-06-16 14:42
295 查看
集合去重的几种方式:
第一种:
第二种:
第三种:
第四种:
第五种:
有些方法针对某些情况可能不好用,但是看懂思路改一改每一个方法都是可以用,希望能够帮助到大家
第一种:
public <T> List<T> getRepeatContains(List<T> ts) { // 存放不可重复的值,HashSet中是不允许存放重复的值的 HashSet<T> set = new HashSet<T>(); // 最终要返回的去重后的数据集合 List<T> repeatElements = new ArrayList<T>(); // 迭代遍历出原始的集合数据进行比对 Iterator<T> iterator = ts.iterator(); while (iterator.hasNext()) { T t = iterator.next(); // 比对如果没有的话就添加进入 if (!set.contains(t)) { set.add(t); } } // 循环结束将数据添加到集合中 repeatElements.addAll(set); // 返回结果 return repeatElements; }
第二种:
HashSet<string> hs = new HashSet<string>(li1); //此时已经去掉重复的数据保存在hashset中
第三种:
for (int i = 0; i < li2.Count; i++) //外循环是循环的次数 { for (int j = li2.Count - 1 ; j > i; j--) //内循环是 外循环一次比较的次数 { if (li2[i] == li2[j]) { li2.RemoveAt(j); } } }
第四种:
//把相同的用null代替。 for (int i = 0; i < li3.Count; i++) { for (int j = 0; j < li3.Count; j++) { if (i == j) continue; if (li3[i] == li3[j]) { li3[j] = "null"; } } }
第五种:
//这方法跟上面的一样,只是变了逻辑 for (int i = 0; i < li4.Count - 1; i++) { for (int j = 0; j < li4.Count ; j++) { if (i != j) { if (li4[i] == li4[j]) { li4[j] = "null"; } } } }
有些方法针对某些情况可能不好用,但是看懂思路改一改每一个方法都是可以用,希望能够帮助到大家
相关文章推荐
- 使用JDB-debug调试
- Java集合---ArrayList的实现原理
- 风后握奇经
- 安卓动态调试七种武器之离别钩 – Hooking(上)
- SQL 函数大全
- MachineLearning— (KNN)k Nearest Neighbor实现手写数字识别(三)
- Linphone探索:5 . Linphone配置大全
- 预示敏捷方法走偏的15个标志——第1部分
- 如何生成 hprof文件 + weblogic启动文件配置
- 通知和kvo以及代理的区别
- D001-开发工具-Protel99SE-配置-常用技巧-快捷键-(ques=1)
- Android通用流行框架大全
- 常见的linux命令
- Palindrome Linked List
- 历次泄密门+常用弱口令字典集合
- MFC画柱状图之High-speed Charting Control(待续)
- Android Fragment 解析(下)
- Activiti工作流引擎使用
- 欢迎使用CSDN-markdown编辑器
- dns2,login.asp