Java中的容器真的很重要
Java中的容器真的很重要
提起Java的容器,对java有一定基础的小伙伴肯定不会陌生。它是一个重要的数据结构,对对象的操作通常离不开集合。
容器分为两种:Collection和Map,Collection是元素的集合,而Map是键值对。
对应容器的代码都是java.util的包下的内容,提供很多操作集合的API
像添加容器使用Arrays.asList()和Collections.addAll()方法
List集合
List接口继承了Collection接口,它下面有很多实现类,典型就是ArrayList和LinkedList了。
Set接口和Collection接口完全一致,,它的特性就是元素不重复,所以常常用它来进行去重操作。它下面的实现类典型的有HashSet、TreeSet。HashSet使用数组散列函数处理这些元素,TreeSet使用红黑树的数据结构,TreeSet可以保证有序。
队列Queue
Queue同样继承了Collection接口,既然是队列,众所周知,先进先出的特性。你可能不知道,LinkedList实现了List接口的同时也实现了Queue接口。
PriorityQueue可以按照一定的等待时长优先级排列这些元素
PriorityQueue的构造方法:
public PriorityQueue(int initialCapacity,
Comparator<? super E> comparator) {
if (initialCapacity < 1)
throw new IllegalArgumentException();
this.queue = new Object[initialCapacity];
this.comparator = comparator;
}
通过PriorityQueue的构造方法我们知道,可以传入一个Comparator的实现类来定义排序规则,例如Collections.reverseOrder()
看一下Queue提供的一些方法:
- offer()是放入元素到队尾
- peek()方法是获取队头的元素,不会将队头元素移除,如果队列为空返回null
- element()方法同样是获取队头的元素,不会将队头元素移除,当如果队列为空的话抛出异常
- poll()方法是移除队头元素并返回队头元素,队列为空返回null
- remove()方法移除并返回队头元素,队列为空抛出异常
Map
说完Collection再说说Map,Map中的get()方法用来获取元素,put()方法用来放置元素,containsKey()方法检测key是否存在,containsValue()方法检测对应的value值是否存在,keySet()方法会让map中的所有的key组成一个set集合,遍历的时候通常会用到这个方法。比如下面这种遍历方式:
for (String key : map.keySet()) {
System.out.println("key= "+ key + " and value= " + map.get(key));
}
最后附上一张这些接口和类的关系图,希望你看完之后更加明了。
总结
这篇文章我们讲了容器中的List、Queue和Map等内容,其实是Collection接口和Map接口两大分支。Java的容器还是相当重要的了,里面涉及到的类也很多,包括一些并发容器,java容器的内容还是值得研究的。
- 点赞
- 收藏
- 关注作者
评论(0)