Java 集合框架 Arraylist的基本使用方法、Vector的特有方法、LinkedList的特有方法、在集合中删除重复自定义类型元素(重写equals方法)

面试时:
哈哈哈哈

集合继承体系图

在这里插入图片描述
还是这个图,上一篇学了List接口,这篇讲的是List底下继承的三个类。
上篇链接:
Java 集合框架 List的方法,List集合特有的遍历功能,listIterator的功能,并发修改异常ConcurrentModificationException的原因和解决办法
https://blog.csdn.net/weixin_43580841/article/details/107462169

List底下三个类:
Arraylist:底层数据结构是数组(顺序表),查询快,增删慢。线程不安全,效率高。
Vector:底层数据结构是数组(顺序表),查询快,增删慢。线程安全,效率低。
LinkedList:底层数据结构是链表,查询慢,增删快。线程不安全,效率高。

Arraylist的基本使用方法

ArrayList l = new ArrayList();

l.add(new Student(22,"sf"));//Student自定义类
l.add(new Student(21,"shff"));
l.add(new Student(20,"sffg"));
l.add(new Student(19,"sdff"));

for(Iterator it = l.iterator();it.hasNext();){
    Student  p = (Student) it.next();
    System.out.println(p);
}

Vector的特有方法

addElement是很早之前就有的方法。和通用的add方法效果一样。
Enumeration也是Vector中很早之前就有的迭代器,效果和集合体系中通用的一样。

Vector v = new Vector();
v.addElement("a");
v.addElement("b");
v.addElement("c");
//Vector迭代
Enumeration en = v.elements();
while (en.hasMoreElements()){
    System.out.println(en.nextElement());
}

运行结果:
a
b
c

LinkedList的特有方法

addFirst方法在头添加,addLast方法在尾添加。
getLast获取最后一个元素,getFirst获取第一个元素(不会被删)。
removeFirst删除第一个,removeLast删除最后一个元素。

在集合中删除重复元素

一般使用集合框架中的contains方法判断是否包含重复元素,举个例子:

private static  ArrayList getSingle(ArrayList l){
    ArrayList  newList = new ArrayList();
    for (Iterator it = l.iterator();it.hasNext();){
        Student p = (Student)it.next();//Student是自定义类,List中的元素都是Student类型
        if(!newList.contains(p)){//判断新List中是否有重复
            newList.add(p);//没有重复就加到新List中
        }
    }
    return newList;//返回新List
}

但是contains方法是通过equals方法实现的,如果传入的对象没有重写equals方法,contains方法判断相等的根据就直接是地址值(通过add方法加入的元素地址都不会相等,contains方法约等于没用)。

也就是说,集合元素是自定义类的时候,如果要使用contains方法,一定要在自定义类中重写equals方法,举个例子,如果我的ArrayList元素是自定义的Student类,那么我判断元素相等的依据就是姓名和年龄相等,重写equals方法如下:
在这里插入图片描述
主方法:

ArrayList a = new ArrayList();
a.add(new Student(27,"fdd"));
a.add(new Student(27,"fdd"));
a.add(new Student(27,"fdd"));

ArrayList n = getSingle(a);
System.out.println(n);

运行结果:[Student{age=27, name=‘fdd’}]

PS:集合框架中通用的remove方法也是通过equals实现的,所以集合元素为自定义类时,要使用remove方法删除元素,也要在自定义类中重写equals方法。

猜你喜欢

转载自blog.csdn.net/weixin_43580841/article/details/107489214