【水贴】 继续简单阅读java util 包

做无关的事,并不能逃避实质的问题。

   好了,继续昨天的学些,今天我们继续简单的阅读一下 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()

返回此地图中包含的映射的Set视图。,可以把map的键值存储的对象,存到一个set视图中取

 

还可以返回它的子视图,因为这个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 接口之外,该类还提供了一些方法来操纵内部使用的存储列表的数组的大小。

 他是不同步的,所以在并发时要注意互斥修改。

以下可以修改内部数组的大小

voidtrimToSize()

修改这个 ArrayList实例的容量是列表的当前大小。

 

 

 

好了今天就到这里

   

 

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值