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

需求:编写一个函数清除(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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值