2022.02.23Java集合每日一考

1.集合Collection中存储的如果是自定义类的对象,需要自定义类重写哪个方法?为什么?

需重写equals(),因为remove(),removeAll(),需要调用equals判断是否相等

List:重写equals()

Set:重写equals()和hashcode(),对于存放在Set容器中的对象,对应的类一定要重写equals()和hashCode(Object obj)方法,以实现对象相等规则。即:“相等的对象必须具有相等的散列码”。

  TreeSet:加入到TreeSet的对象的类必须实现Comparable接口

 

2.ArrayList,LinkedList,Vector三者的相同点与不同点?【面试题】

相同点:都是List接口的实现类,元素有序可重复的;

不同点:ArrayList线程不安全,Vector是线程安全的

    LinkedList底层是双向链表存储元素的,ArrayList和Vector是底层都是一个自动变长的数组

 

3.List 接口的常用方法有哪些?(增、删、改、查、插、长度、遍历)

增 add

删 remove、removeAll

改 set(int index,Object o)

查 get(int index)

插 insert(int index,Object o),insert(Object o)

长度 size()

遍历 ①使用iterator迭代器②增强for循环③一般for循环

 

4.如何使用Iterator和增强for循环遍历List。举例说明

public class CircleTest {
    public static void main(String[] args) {

        Circle cir1 = new Circle(1.0);
        Circle cir2 = new Circle(2.0);
        Circle[] circles = new Circle[]{cir1,cir2};
        for (Circle circle:circles) {
            System.out.println(circle.getRadius());
        }

        System.out.println("_________________");

        Collection colls = new ArrayList();
        colls.add(cir1);
        colls.add(cir2);
        Iterator iterator = colls.iterator();
        while (iterator.hasNext()){
            Circle c = (Circle)iterator.next();
            System.out.println(c.getRadius());
        }
}

输出:

1.0
2.0
_________________
1.0
2.0

 

5.Set存储数据的特点是什么?常见的实现类有什么?说明一下彼此的特点。

Set是一个数组+链表的形式,通过计算存入元素的hashcode,无序且不可重复地存入。

实现类:hashSet数组+链表

    LinkHashSet数组+链表,每一个元素之间有双向链表,按顺序保存,不允许元素重复

    TreeSet:new一个hashMap对象,底层是使用红黑树结构存储数据

 

posted @ 2022-02-23 22:55  Fancy[love]  阅读(76)  评论(0编辑  收藏  举报