List去重

我不是女神ヾ 2022-04-21 23:58 279阅读 0赞

我们知道List允许有相同的元素,那么我们怎么通过方法来让它去重呐,
我们都会想到Set集合,Set集合是不允许有相同的元素的,所以我们可以借助Set集合,把重复的元素去掉。如果不是对象类型的去重。直接用Set集合转化就行。就像下面的

  1. List list = new ArrayList();
  2. list.add("aa");
  3. list.add("dd");
  4. list.add("cc");
  5. list.add("aa");
  6. Set set = new HashSet();
  7. set.addAll(list);
  8. List n = new ArrayList<>();
  9. n.addAll(set);
  10. System.out.println(n);
  11. 结果:
  12. [aa, dd, cc]
  13. 通过这,你会发现可以啊
  14. 但是对象呐,
  15. public class People {
  16. private String name;
  17. private String phoneNumber;
  18. public String getName() {
  19. return name;
  20. }
  21. public void setName(String name) {
  22. this.name = name;
  23. }
  24. public String getPhoneNumber() {
  25. return phoneNumber;
  26. }
  27. public void setPhoneNumber(String phoneNumber) {
  28. this.phoneNumber = phoneNumber;
  29. }
  30. public People(String name, String phoneNumber) {
  31. super();
  32. this.name = name;
  33. this.phoneNumber = phoneNumber;
  34. }
  35. @Override
  36. public String toString() {
  37. return "People{" +
  38. "name='" + name + ''' +
  39. ", phoneNumber='" + phoneNumber + ''' +
  40. '}';
  41. }
  42. }

这种需要重写equals和hashcode,再用Set去重。

  1. public class People {
  2. private String name;
  3. private String phoneNumber;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public String getPhoneNumber() {
  11. return phoneNumber;
  12. }
  13. public void setPhoneNumber(String phoneNumber) {
  14. this.phoneNumber = phoneNumber;
  15. }
  16. public People(String name, String phoneNumber) {
  17. super();
  18. this.name = name;
  19. this.phoneNumber = phoneNumber;
  20. }
  21. @Override
  22. public String toString() {
  23. return "People{" +
  24. "name='" + name + ''' +
  25. ", phoneNumber='" + phoneNumber + ''' +
  26. '}';
  27. }
  28. @Override
  29. public boolean equals(Object arg0) {
  30. // TODO Auto-generated method stub
  31. People p = (People) arg0;
  32. return name.equals(p.name) && phoneNumber.equals(p.phoneNumber);
  33. }
  34. @Override
  35. public int hashCode() {
  36. // TODO Auto-generated method stub
  37. String str = name + phoneNumber;
  38. return str.hashCode();
  39. }
  40. }

这里注意一下重写equals方法和hashcode方法

  1. public boolean equals(Object orgs){
  2. // 强制类型转换
  3. People p = (People)orgs;
  4. return p.name.equals( name )&& p.phoneNumber.equals(phoneNumber);
  5. }
  6. public int hashcode(){
  7. String str = name + phoneNumber;
  8. return str.hashCode();
  9. }

发表评论

表情:
评论列表 (有 0 条评论,279人围观)

还没有评论,来说两句吧...

相关阅读

    相关 List

    在日常工作中,需要对 List 进行去重的场景很多。对于我这样一个菜鸟来说,可能能想到的最简单粗暴的方法就是双层循环去重,但是在看到这篇文章之后,果断收藏了。 [https:

    相关 List

    我们知道List允许有相同的元素,那么我们怎么通过方法来让它去重呐, 我们都会想到Set集合,Set集合是不允许有相同的元素的,所以我们可以借助Set集合,把重复的元素去掉

    相关 List

      list中数据的去重,通常使用将list转换为set,简单直接,因为set集合的特点就是没有重复的元素。需要考虑一下两种情况: 1.List集合中的数据类型是基本数据

    相关 List

    思路:   1、先将list转换成HashSet   2、将HashSet再转换成List 源码如下: List<A> list = new ArrayList