清除(ArrayList)集合中重复元素

来源:互联网 发布:淘宝自行车哪家好 编辑:程序博客网 时间:2024/05/23 15:48
需求:编写一个函数清除(ArrayList)集合中重复元素,如果书号是一样的就视为重复元素。
        方式1:get
        方式2:迭代器 
  1. package com.cn.list;
  2. import java.util.ArrayList;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. /**
  6. * Author:Liu Zhiyong
  7. * Version:Version_1
  8. * Date:2016年7月14日12:43:48
  9. * Desc:需求:编写一个函数清除集合中重复元素,如果书号是一样的就视为重复元素。
  10. */
  11. class Book{
  12. int id;
  13. String name;
  14. public Book(int id, String name) {
  15. this.id = id;
  16. this.name = name;
  17. }
  18. @Override
  19. public boolean equals(Object obj) {
  20. // TODO Auto-generated method stub
  21. Book b = (Book)obj;
  22. return this.id == b.id;
  23. }
  24. @Override
  25. public int hashCode() {
  26. // TODO Auto-generated method stub
  27. return this.id;
  28. }
  29. }
  30. public class Demo6 {
  31. public static void main(String[] args) {
  32. ArrayList list2 = new ArrayList();
  33. list2.add(new Book(110, "java编程思想"));
  34. list2.add(new Book(120, "java核心技术"));
  35. list2.add(new Book(130, "深入JavaWEB"));
  36. list2.add(new Book(110, "jsp"));
  37. list2.add(new Book(140, "javaScript"));
  38. list2.add(new Book(150, "javaee"));
  39. list2.add(new Book(120, "java核心技术大全"));
  40. ArrayList list = clearRepeat3(list2);
  41. //ArrayList list = clearRepeat2(list2);
  42. //ArrayList list = clearRepeat1(list2);
  43. printList(list);
  44. }
  45. //遍历结合输出
  46. public static void printList(ArrayList list) {
  47. Iterator iterator = list.iterator();
  48. while(iterator.hasNext()){
  49. Book b = (Book)iterator.next();
  50. System.out.println(b.id + "\t" + b.name);
  51. }
  52. }
  53. public static ArrayList clearRepeat1(ArrayList list){
  54. //创建一个新的集合
  55. ArrayList newList = new ArrayList();
  56. //获取迭代器
  57. Iterator iterator = list.iterator();
  58. while(iterator.hasNext()){
  59. Book b = (Book)iterator.next();//从旧集合中获取的元素
  60. Iterator iterator2 = newList.iterator();
  61. boolean flag = true;
  62. while(iterator2.hasNext()){
  63. Book b2 = (Book)iterator2.next();//获取新集合中的元素
  64. if(b.id == b2.id){
  65. flag = false;
  66. }
  67. }
  68. if(flag)
  69. newList.add(b);
  70. }
  71. return newList;
  72. }
  73. //get方法
  74. public static ArrayList clearRepeat2(List list2) {
  75. ArrayList list = new ArrayList();
  76. for(int i=0; i<list2.size(); i++){
  77. Book b2 = (Book)list2.get(i);
  78. boolean flag = true;
  79. for(int j=0; j<list.size(); j++){
  80. Book b = (Book)list.get(j);
  81. if(b2.id == b.id){
  82. flag = false;
  83. }
  84. }
  85. if(flag){
  86. list.add(list2.get(i));
  87. }
  88. }
  89. return list;
  90. }
  91. //迭代器
  92. public static ArrayList clearRepeat3(ArrayList list2) {
  93. ArrayList list = new ArrayList();
  94. Iterator iterator = list2.iterator();
  95. while(iterator.hasNext()){
  96. Book b = (Book)iterator.next();
  97. if(!list.contains(b)){//这里比较的是id是否相同,所以要重写equals方法(和hashCode方法)
  98. list.add(b);
  99. }
  100. }
  101. return list;
  102. }
  103. }
0 0
原创粉丝点击