java-集合(练习)

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

需要重写equals方法;因为根据hashCode()方法,他们是两个对象,违反了相同对象必须具有相等的散列码,所以对应的类一定要重写equals()和hashCode()方法,以实现对象相等规则(相等的对象必须具有相等的散列码)。

2、ArrayList,LinkedList,Vector三者的相同点和不同点。

相同点:

都是List接口的实现类

元素都有序可重复

不同点:

ArraysList是线程不安全的,Vector是线程安全的

ArraysList和Vector底层都是一个自动边长的数组,LinkedList地城是双向链表存储元素的。

3、List接口中的常用方法。

增:add(int index,E element)、addAll(int index,Collection<? ecxends E>c)

删:remove(),removeAll()

改:set(int index,E element)

查:get(int index),subList(int fromIndex,int toIndex)

插:insert(int index,E element)

长度:size()

遍历:Iterator迭代器(hasNext(),next())

4、Set存储数据的特点是什么?有哪些写实现类、简述各实现类特点。

Set是一个数组+链表的形式,通过计算元素的hashCode将元素无序无重复的存入。

hashSet:不能保证元素的排列顺序。HashSet 不是线程安全的。集合元素可以是 null

LinkHashSet:LinkedHashSet 是 HashSet 的子类,但它同时使用双向链表维护元素的次序,这使得元素看起来是以插入顺序保存的。

TreeSet:TreeSet 可以确保集合元素处于排序状态。TreeSet底层 使用红黑树结构存储数据。

5、如何去除list中重复的数据。

可以利用HashSet不能添加重复数据的特点,去除重复元素。

可以利用List中contains方法循环遍历,避免重复

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值