做无关的事,并不能逃避实质的问题。
好了,继续昨天的学些,今天我们继续简单的阅读一下 java.util包下的内容,记住时简单,简单,就是扫一眼
1.Set 集合 实现了Collection接口 与Iterable 可迭代接口, 集合算是数学上的一个概念,重复的元素不能同样出现,没有什么特殊的方法,都是继承那两个接口 定义的
2.sortedMap 有序的地图, 可以根据 提供的比较器 ,把键值作为关键字去排序,所以对其的要求就是,键值对象是可相互比较的,
(插入到排序集中的所有元素必须实现Comparable接口(或被指定的比较器接受)。 此外,所有这些元素都必须是可相互比较 :e1.compareTo(e2)(或comparator.compare(e1, e2))不得为任何元件在分类组e1和e2抛出ClassCastException。 尝试违反此限制将导致违规方法或构造函数调用抛出ClassCastException 。)
内含有几个简单的方法
Comparator<? super K> | comparator() 返回我用了那个比较器 |
Set<Map.Entry<K,V>> | entrySet() 返回此地图中包含的映射的 |
还可以返回它的子视图,因为这个map 时排过序的,所以可以 给定一个K 键值,返回小于这个K的 sortedMap 对象。还有几个方法,时 得到第一个最小键值元素,和得到最后一个最大键值元素,这些都是根据它的有序性 提供的特定的方法
3.SortedSet 与SortedMap所要表达的意思一致,内容按照特定的比较器去排序,提供的方法与SortedMap 类似
4. Spliterator 可分割迭代器,即把原来迭代的内容,可以再次生成一个迭代器,如a原来遍历0-9,在次分 B= a.spliterator 就是b 遍历0-4 a遍历4-9.具体还需要参阅一下源码(其实看源码也不难嘛,先猜函数的意思,在跟自己平常写的一样去看,就好了)
接下来时Class 的内容
1。AbstractCollection<E>
api中 是这样说的
该类提供了Collection接口的骨架实现,以尽量减少实现此接口所需的工作量。 这样 这个类的意图就很明显了。
为了实现一个不可修改的集合,程序员只需要扩展这个类并提供iterator和size方法的实现。 ( iterator方法返回的迭代器必须实现hasNext和next ) ,因为在便利的过程中 ,不需要修改他的内容,所以只要实现迭代器的hasNext 与 next 就Ok 还有就是集合的长度。
要实现可修改的集合,程序员必须另外覆盖此类的add方法(否则将抛出UnsupportedOperationException ),并且由iterator方法返回的迭代器必须另外实现其remove方法。 都说了时可修改了,那add 和remove 必须重写。
2.AbstractList<E>
跟上述一样,也是为了能最小化的让后来的类去实现这个接口,List的骨架类(就是内容都大致搭好了,需要自己画上 血液,肌肉 等细节内容),同样氛分为 ,不能改变,和可以改变
不可改变 重写 get(),size()方法 就过够用了
可以改变,需要重写 set(E e),若需要可变 需要重写 add(int i,E e) 与 remove(int i) 毕竟这个可以变化的内容很多,
构造参数村遵循 Collection 的规范 一个void 的 一个能够接收一个集合的
3.AbstractMap<K,V>
看到这个名称 都知道了把 Map接口的骨架类(什么是骨架,见上述),意图:为了能让其他类花最好的代价去实现 Map接口
4.AbstractMap.SimpleEntry<K,V>
简单的地图映射的键值入口对象,这个时实际存储内容的对象,相当于配合AbstractMap 所做出的类,可以通过构造其传入键值K,与value V ,去构建一个这样的对象
5.AbstractMap.SimpleImmutableEntry<K,V>
与上述一样,只不过 Immutable 不可变的,即这个 键值对象 不支持 setvalue 操作,一次创建,永不更新
6.AbstractQueue<E>
同样时队列的骨架类
7.AbstractSequentialList<E>
有序队列的实现类,即实现了List 这个接口
8. AbstractSet<E>
同样是Set的骨干类,都不想写了
9.ArrayDeque<E>
双端队列接口的骨架类,在原api 中 有一句话,很有意思,
可调整大小的数组的实现的Deque
接口。 数组deques没有容量限制; 他们根据需要增长以支持使用。 它们不是线程安全的; 在没有外部同步的情况下,它们不支持多线程的并发访问。 零元素被禁止。 当用作堆栈时,此类可能会比Stack
快,并且当用作队列时速度高于LinkedList
。
这个类虽然实现了,Itertor 接口,但是却没有什么内容,会直接抛出异常,防止你的错误使用
10.ArrayList<E>
这个比较常用,来看一下api 对这个类的解释
可调整大小的数组的实现List接口, 除了实现List 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。
他是不同步的,所以在并发时要注意互斥修改。
以下可以修改内部数组的大小
void | trimToSize() 修改这个 ArrayList实例的容量是列表的当前大小。 |
好了今天就到这里