常用集合(Set等)

Set

a.只需要存储不重复的key,不需要存储映射的value时,用Set集合。
b.存储Set不重复的元素集合,主要方法:
        i.将元素添加进Set:boolean add(E e);
        ii.将元素从Set删除:boolean remove(Object o);
        iii.判断是否包含元素:boolean contains(Object o);

c.Set实际上相当于只存储Key,不存储Value的Map。我们经常用Set去除重复元素。
d.因为放入Set的元素和Map的key类似,都要正确重写equals()和hashCode()方法,否则该元素无法正确放入Set。
e.最常用的Set实现类是HashSet,实际上,HashSet是对HashMap的一个简单封装。

f.Set接口并不保证有序,但是SortedSet接口是保证元素有序的。
        i.HashSet是无序的,因为它实现Set接口,不实现SortedSet接口。
        ii.TreeSet是有序的,因为它实现SortedSet接口。
g.使用TreeSet时,添加的元素必须正确实现Comparable接口,如果没有实现Comparable接口,那么创建TreeSet时必须传入一个Comparator对象。

Queue(队列:先进先出)

i.先进先出(FIFO:First In First Out)的有序表。
ii.和List的区别:List可以在任意位置添加删除元素,Queue只有两个操作:
        1.把元素添加到队列末尾。
        2.从列队头部取出元素。
iii.定义了几个方法

iv.注意:不要把null添加到队列中,否则poll()方法返回null时,很难确定是取到了null元素还是队列为空。
v.使用poll()和peek()的区别:poll()取完队首元素并删掉;peek()取完队首元素不删,可用于重复获取。

PriorityQueue(优先队列)

i.它的出队顺序与元素的优先级相关,对PriorityQueue调用remove()或poll()方法,返回的总是优先级最高的元素。
ii.PriorityQueue的优先级通过实现Comparable接口的排序实现,放入PriorityQueue的元素要么实现Comparable接口,要么在创建PriorityQueue对象时传入Comparator对象。

Deque(双端队列)

i.允许两头都进,两头都出,即双端队列(Double Ended Queue)。
ii.功能:
        1.既可以添加到队尾,也可以添加到队首;
        2.既可以从队首获取,也可以从队尾获取。

iii.注意:Deque接口实际上扩展了Queue。

Stack(栈:后进先出)

i.使用
        1.是一种后进先出(LIFO:Last In First Out)的数据结构。
        2.由于java中遗留类Stack的问题,没有单独的Stack接口,使用Deque来模拟Stack。
        3.只有入栈和出栈操作。
                a.把元素压栈:push(E);
                b.把栈顶元素弹出:pop();
                c.取栈顶元素但不弹出:peek()。
ii.作用
        1.JVM在处理Java方法调用的时候就会通过栈这种数据结构维护方法层次的调用。
        2.JVM会创建方法调用栈,每调用一个方法时,先将参数压栈,然后执行对应的方法;当方法返回时,返回值压栈,调用方法通过出栈操作获得方法返回值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值