Java中,按照保存对象的不同,分为Collection和Map两种。其中Collection是一个独立元素的序列,又按照一定的规则,分为一下三类:
List 按照插入的顺序保存对象Set 不能有重复元素Queue 按照队列规则来确定对象产生的序列。而Map,是一组成对的键值对 对象。
在Java.util包中的Arrays和Collections有一些方法,可以在一个Collection中添加一组元素。
Arrays.asList 这个方法接受一个数组或是一个用逗号分割的元素列表。使用方法如下。 Integer[] ints = {1,2,3,4,5}; // 返回的为Object List list_0 = Arrays.asList(ints); //显示类型参数 List<Integer> list_1 = Arrays.<Integer>asList(ints); Collections.addAll(list_1,ints); list_0.addAll(Collection对象);值得我们注意的是,
Arrays.asList输出的List,其底层表示是数组,不能调整其尺寸。可以通过显示类型参数来设置Array.asList返回列表类型有两种类型的List。
ArrayList,擅长随机访问元素,但是在List中插入和删除元素速度比较慢。LinkedList,优化了顺序访问,在中间进入插入和删除操作快,但是随机访问方面较慢。一些基本的Api用法。
contains 来确定某个对象是否在列表中。subList 允许你很容易地从较大列表中创建一个片段retainAll 求交集的操作LinkedList还添加了可以使其用作栈,队列或双端队列的方法。下面就简单说明一些api的区别。(很少的一部分)
getFirst 和 element 完全一样,返回列表的第一个元素,并不移除他。如果list为空,则抛出异常,而peek方法在list为空的时候,返回nullremoveFirst 与 remove也完全一样,他们移除并返回列表的头,在列表为空时抛出异常,而poll方法,在列表为空时返回null。addFirst add addLast相同,将某个元素插入到列表的尾部。removeLast移除并返回列表的最后一个元素Set中不能保存重复的对象,有以下几类。
HashSet 使用了散列TreeSet 使用红黑树的数据结构保存LinkedHashSet 也使用了散列。队列是一种典型的先进先出(FIFO)的容器。LinkedList提供了方法支持队列的行为,并且它实现了Queue接口。
offer 在允许的情况下,将一个元素插入到队尾,或者返回falsepeek 和 element前面提到过了poll和remove方法移除并返回队头。优先级队列,当通过offer来插入对象时,这个对象会在队列中被排序,默认的顺序是自然顺序。
将对象映射到其他对象。map也很容易扩展成多维。由于我们在开发中经常用到map,所以我们这里就不在多说了。
迭代器是一个对象,它的工作是遍历并选择序列中的对象,迭代器是一个轻量级对象,创建他的代价很小。Java中的Iterator只能单项移动。
使用iterator 要求容器返回一个Iterator使用next获得序列中的下一个元素使用hasNext检查序列中是否还有元素使用remove将迭代器最近返回的元素删除这个迭代器比较强大,因为他可以双向移动。
hasPrevious 是否有前一个previous 返回前一个的元素接下来会对这些进行详细的分析,敬请期待