java去除List中重复的元素

 

如果用Set ,倘若list里边的元素不是基本数据类型而是对象,

那么请覆写Object的boolean   equals(Object   obj)   和int   hashCode()方法.

return new ArrayList(new HashSet(list)); 


 

方法一:循环元素删除 
图片点击可在新窗口打开查看// 删除ArrayList中重复元素 

Java代码  

  1. public static void removeDuplicate(List list) {  

  2.    for ( int i = 0 ; i < list.size() - 1 ; i ++ ) {  

  3.      for ( int j = list.size() - 1 ; j > i; j -- ) {  

  4.        if (list.get(j).equals(list.get(i))) {  

  5.          list.remove(j);  

  6.        }   

  7.       }   

  8.     }   

  9.     System.out.println(list);  

  10. }   

 
方法二:通过HashSet剔除
图片点击可在新窗口打开查看// 删除ArrayList中重复元素 

Java代码  

  1. public static void removeDuplicate(List list) {  

  2.       HashSet h = new HashSet(list);  

  3.       list.clear();  

  4.       list.addAll(h);  

  5.       System.out.println(list);  

  6. }   

 
方法三: 删除ArrayList中重复元素,保持顺序
// 删除ArrayList中重复元素,保持顺序 

Java代码  

  1. public static void removeDuplicateWithOrder(List list) {  

  2.      Set set = new HashSet();  

  3.       List newList = new ArrayList();  

  4.    for (Iterator iter = list.iterator(); iter.hasNext();) {  

  5.           Object element = iter.next();  

  6.           if (set.add(element))  

  7.              newList.add(element);  

  8.        }   

  9.       list.clear();  

  10.       list.addAll(newList);  

  11.      System.out.println( " remove duplicate " + list);  

  12. }  

  13. 方法四:

  14. import java.util.ArrayList;

  15. import java.util.Iterator;

  16. /*

  17.  * ArrayList去除集合中字符串的重复值(字符串的内容相同)

  18.  * 

  19.  * 分析:

  20.  * A:创建集合对象

  21.  * B:添加多个字符串元素(包含内容相同的)

  22.  * C:创建新集合

  23.  * D:遍历旧集合,获取得到每一个元素

  24.  * E:拿这个元素到新集合去找,看有没有

  25.  * 有:不搭理它

  26.  * 没有:就添加到新集合

  27.  * F:遍历新集合

  28.  */

  29. public class ArrayListDemo {

  30. public static void main(String[] args) {

  31. // 创建集合对象

  32. ArrayList array = new ArrayList();


  33. // 添加多个字符串元素(包含内容相同的)

  34. array.add("hello");

  35. array.add("world");

  36. array.add("java");

  37. array.add("world");

  38. array.add("java");

  39. array.add("world");

  40. array.add("world");

  41. array.add("world");

  42. array.add("world");

  43. array.add("java");

  44. array.add("world");


  45. // 创建新集合

  46. ArrayList newArray = new ArrayList();


  47. // 遍历旧集合,获取得到每一个元素

  48. Iterator it = array.iterator();

  49. while (it.hasNext()) {

  50. String s = (String) it.next();


  51. // 拿这个元素到新集合去找,看有没有

  52. if (!newArray.contains(s)) {

  53. newArray.add(s);

  54. }

  55. }


  56. // 遍历新集合

  57. for (int x = 0; x < newArray.size(); x++) {

  58. String s = (String) newArray.get(x);

  59. System.out.println(s);

  60. }

  61. }

  62. }

  63. 方法五:分组排序思想。

  64. import java.util.ArrayList;

  65. import java.util.Iterator;


  66. /*

  67.  * 需求:ArrayList去除集合中字符串的重复值(字符串的内容相同)

  68.  * 要求:不能创建新的集合,就在以前的集合上做。

  69.  */

  70. public class ArrayListDemo2 {

  71. public static void main(String[] args) {

  72. // 创建集合对象

  73. ArrayList array = new ArrayList();


  74. // 添加多个字符串元素(包含内容相同的)

  75. array.add("hello");

  76. array.add("world");

  77. array.add("java");

  78. array.add("world");

  79. array.add("java");

  80. array.add("world");

  81. array.add("world");

  82. array.add("world");

  83. array.add("world");

  84. array.add("java");

  85. array.add("world");


  86. // 由选择排序思想引入,我们就可以通过这种思想做这个题目

  87. // 拿0索引的依次和后面的比较,有就把后的干掉

  88. // 同理,拿1索引...

  89. for (int x = 0; x < array.size() - 1; x++) {

  90. for (int y = x + 1; y < array.size(); y++) {

  91. if (array.get(x).equals(array.get(y))) {

  92. array.remove(y);

  93. y--;

  94. }

  95. }

  96. }


  97. // 遍历集合

  98. Iterator it = array.iterator();

  99. while (it.hasNext()) {

  100. String s = (String) it.next();

  101. System.out.println(s);

  102. }

  103. }

  104. }



 


如果用HashSet的话,如果是对象,则要将对象实现equals和hashCode方法

 

from:http://hi.baidu.com/pj1990zp/item/0217520f5193528a3d42e251