Java

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

2018-12-30  本文已影响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);
    }*/


}
上一篇下一篇

猜你喜欢

热点阅读