美文网首页Java
Java19-2 集合类去除重复对象

Java19-2 集合类去除重复对象

作者: 第二套广播体操 | 来源:发表于2018-12-30 21:48 被阅读0次

List独有方法:

import java.util.ArrayList;
import java.util.List;

public class ListTest2 {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add("abc1");
        list.add("abc2");
        list.add("abc1");
        list.add("abc3");
        list.add("abc4");
        list.add("abc5");
        list.add("abc5");
        list.add("abc6");
        for (int i = 0; i <list.size()-1; i++) {
            Object obj=list.get(i);
            for (int j =i+1; j <list.size(); j++) {
                   if (obj.equals(list.get(j)))
                   { list.remove(j);//如果删除了下一个 因为是数组形
                       // 式,所以整体提前。如果紧接着下一个会提到j位置上 所以j-- 遍历到删除后紧接的下一个
                   j--;}
            }
        }
        System.out.println(list.toString());

    }
}

集合迭代器方法:

//建立临时集合 将此集合中的对象按顺序放入临时集合中
//相同的不放入临时结合 清空此集合,将临时集合中添加到此集合完成
public class ListTest2_1 {
    public static void main(String[] args) {
        List list=new ArrayList();
        list.add("abc1");
        list.add("abc2");
        list.add("abc1");
        list.add("abc3");
        list.add("abc4");
        list.add("abc5");
        list.add("abc5");
        list.add("abc6");
       singleElement(list);
        System.out.println(list.toString());
    }

    private static void singleElement(List list) {
        List list1=new ArrayList();
        for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
            String next = (String) iterator.next();
              if (!list1.contains(next)) {
                  list1.add(next);
              }
        }
        list.clear();
        list.add(list1);
    }
}

取出对象中自定义元素 及去掉重复元素

//将Person对象存入List集合中 并显示出来
public class ListTest1 {
    public static void main(String[] args) {
        List list=new ArrayList();
        ListTest1_Person lp1=new ListTest1_Person("松江",15);
        ListTest1_Person lp2=new ListTest1_Person("阿萨",15);
        ListTest1_Person lp3=new ListTest1_Person("自行车",15);
        list.add(lp1);
        list.add(lp2);
        list.add(lp3);
        list.add(new ListTest1_Person("松江",15));
        list.add(new ListTest1_Person("松江",16));
        list.add(new ListTest1_Person("阿萨",15));
        singleElement(list);
        System.out.println(list.toString());//调用的内部toString方法  --2
//取出自定义元素--1
     /*   for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
            ListTest1_Person next = (ListTest1_Person) iterator.next();//.next();是obj类型
//            向下转换类型 转换成ListTest1_Person类型可以调用get方法
            System.out.println(next.getName()+next.getAge());
        }*/


    }
//    --2
    private static void singleElement(List list) {
        List list1=new ArrayList();
        for (Iterator iterator = list.iterator(); iterator.hasNext(); ) {
            ListTest1_Person next = (ListTest1_Person) iterator.next();
            if (!list1.contains(next)) {
                //contains方法调用的引用类对象的equals方法 所以复写方法使equals不但判断地址而且判断年龄姓名
                list1.add(next);
            }
        }
        list.clear();
        list.add(list1);
    }
}

Person类

public class ListTest1_Person {
    private String name;
    private int age;

    public ListTest1_Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "ListTest1_Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
         if (!(o instanceof ListTest1_Person))
         {throw new ClassCastException("类型不对");}
         ListTest1_Person lp=(ListTest1_Person) o;
         return this.name.equals(lp.name)&&this.age==lp.age;
    }

  /*  @Override  自动添加的方法 alt+Insert
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ListTest1_Person that = (ListTest1_Person) o;
        return age == that.age &&
                Objects.equals(name, that.name);
    }*/


}

相关文章

  • Java19-2 集合类去除重复对象

    List独有方法: 集合迭代器方法: 取出对象中自定义元素 及去掉重复元素 Person类

  • Java基础笔记16

    16.01_集合框架(去除ArrayList中重复字符串元素方式1) A:案例演示需求:ArrayList去除集合...

  • Java list 去重

    去除List中重复的 String 去除List中重复的对象 Person 对象: 根据name去重: 根据nam...

  • 集合--基础知识

    集合 集合类是一种工具类,存储数量不等的对象,可以实现栈,队列等数据结构。可以分为:Set:无序,不可重复的集合;...

  • 《Kotlin入门实战》CH7 | 集合类

    集合类 在Java类库中有一套相当完整的容器集合类来持有对象。Kotlin没有去重复造轮子(Scala则是自己实现...

  • 第7章 集合类

    第7章 集合类 在 Java 类库中有一套相当完整的容器集合类来持有对象。Kotlin没有去重复造轮子(Scala...

  • Java集合--对比的视角

    单线程类集合 List 继承自Conllection元素以线性方式存储,集合中可以存放重复对象。 ArrayLis...

  • ArrayList的小练习

    需求:将集合中相同的东西去除掉 ArrayList去除集合中字符串的重复值(字符串的内容相同) 分析:A:创建集合...

  • 7月24号_list集合

    List的学习 今天的主要内容 集合框架(去除ArrayList中重复字符串元素方式)(掌握) 集合框架(去除Ar...

  • Java (集合 Set)

    Set集合中的内容不按特定的顺序排序,只是简单添加对象,不能包含重复的对象 **Set集合由 set类和set接口...

网友评论

    本文标题:Java19-2 集合类去除重复对象

    本文链接:https://www.haomeiwen.com/subject/rfjblqtx.html