collection中List和Set

在这里插入图片描述

List接口的特点:

a.有下标
b.有序的(有序不是自然顺序,不是123,abc,有序指的是存和取的顺序一致)
c.可重复
实现类:ArrayList,LinkedList,Vector
ArrayList:底层采用数组结构,查询快,增删慢
LinkedList:底层采用链表结构,查询慢,增删快
Vector:底层采用数组结构,查询快,增删慢
List结构中具有的方法:
增: add(E e);add(int index,E e);
删: remove(Object obj);remove(int index);
改: set(int index,E e);
查: get(int index);
其他:
size(),clear(),contains(Object obj),toArray()
iterator();isEmpty()

实现类的方法:
1.ArrayList:方法基本和List中定义的一模一样
2.LinkedList:除了和List接口中一样的方法之外
LinkedList提供了大量首位操作的方法
第一组:
void addFirst(E e);
void addLast(E e);
第二组:
E removeFirst();//删除首个元素,返回被删除的元素
E removeLast();//删除尾部元素,返回被删除的元素
第三组:
E getFirst();
E getLast();
第四组:
E pop();//弹出,删除集合中的某一个元素,和 removeFirst功能是一样的
void push(E e);//推入,把一个元素添加到集合中, 和addFist功能是一样的

Set接口的特点:

a.无下标
b.无序的(无序指的是存和取的顺序不一定一致,LinkedHashSet和TreeSet除外)
c.不可重复
实现类:HashSet,LinkedHashSet,TreeSet
HashSet:底层采用哈希表结构,查询快,增删快,无序的
LinkedHashSet:底层采用 链表+哈希表,查询快,增删快,有序的
Set接口中的没有特有方法,其方法和父接口Collection基本一模一样
实现类:
HashSet和LinkedHashSet中的方法基本和Set接口一模一样

HashSet集合是如何保证元素唯一性的?

HashSet集合保证元素唯一性,依赖的是元素的hashCode方法和euqals方法。
当元素的哈希值不同时,元素都有自己的独立位置。不需要在判断元素的equals方法,
当元素的哈希值相同时,这时元素在哈希表中位置相同,这时就需要在判断一次元素的内容是否相同。
就需要调用元素的equals方法进行一次比较。如果equals返回是true。那么视为两个元素为重复元素。
只储存一个。
如果返回是false,那么这两个元素不是重复元素,会存储在同一个哈希值上。
为了建立自定义对象判断元素是否重复的依据。
需要覆盖hashCode方法,和equals方法。
而且最好依据对象的特有条件来建立hashcode和euqals的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值