欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-03-30 22:59:04
...

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

集合继承体系图

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方法如下:
Java 集合框架 Arraylist的基本使用方法、Vector的特有方法、LinkedList的特有方法、在集合中删除重复自定义类型元素(重写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方法。