java集合框架笔记

 

集合框架

集合概述:

1.       集合框架为程序提供了一种处理对象组的标准方式。

2.       框架设计目标:首先,框架必须是高性能的(动态数组,链表,树,哈希表)的实现是高效率的。其次,框架中的集合必须以相似的方式操作。最后,容易扩展改变一个集合。为此整个框架设计为一系列的标准接口。

3.       算法是对集合的操作,定义成Collection类中的静态方法。

4.       Iterator接口,定义了通用的访问集合元素的标准方式,即一次访问一个。

5.       集合框架中新添加了映射接口和类,但她不属于“集合”。但可以得到集合试图。

对集合的修改:

1.       泛型的加入增加了类型安全。

2.       自动装箱为简单数据类型的使用提供了便利

3.       for-each 循环

集合接口:JDK 1.6

接口

描述

Collection

允许处理一组对象,位于集合层次结构的顶部

Deque

扩展Queue,处理双端队列(6 new

List

扩展collection,处理序列(对象列表)

NavigableSet

扩展SortSet接口,以处理最近匹配元素取回。

Queue

扩展Collection接口,处理列表中的特殊类型,其中的元素只能从前面删除。

Set

扩展Collection接口,以处理集合,其中的元素必须是唯一的。wuxu

SortSet

扩展Set接口,以处理排序的集合。

 

 集合类

描述

AbstractCollection

实现大部分Collection接口

AbstractList

扩展AbstractCollection,实现大部分List接口

AbstractQueue

扩展AbstractCollection,实现部分Queue接口

AbstractSequentiaList

扩展AbstractList,用于顺序而不是随机的访问集合元素

LinkedList

通过扩展AbstractSequentiaList实现链表

ArrayList

通过扩展AbstractList实现动态数组

ArrayDeque

通过扩展AbstractCollection和实现Deque接口,实现动态双端队列(6 new

AbstractSet

扩展AbstractCollection,实现大部分Set接口

EnumSet

扩展AbstractSet,用于enum元素

HashSet

扩展AbstractSet,用于哈希表

LinkedHashSet

扩展HashSet,允许按照插入的顺序来迭代

PriorityQueue

扩展AbstractQueue,支持基于优先权的队列

TreeSet

在树中实现组,扩展AbstractSet

 

 

映射接口:

接口

描述

Map

映射唯一键到值

Map.Entry

描述映射中的元素(一个键值对).她是Map内部类

NavigableMap

扩展了SortedMap,以处理基于最接近匹配搜索的的键值对

SortedMap

扩展了Map,将键以升序保存。

 

 

 

Map接口:

映射围绕两个基本操作:get(),put()Put ()方法并指定键和值。要得到值,调用get(KEY)方法。

   映射不是集合,不实现Collection接口。但可以得到一个映射的集合视图,方法为entrySet

要获得键的集合视图,方法是keySet()方法。

SortedMap

  确保以升序的方式保存键值对。这样能够通过她定义的方法得到,子映射,像:headMap(K  end), endMap(K start), tailMap(K start,K end)

NavigableMap:

 她是java SE 6 中新增的扩展了,SortedMap接口。

Map.Entry:

利用她能够表示一个映射项的类型,在Map接口中声明的entrySet()方法返回的是包含所有映射项键值对的组,每个组元素就是一个Map.Entry对象。

 她定义了equals(Object obj), K getKey(),V getValue(), int hashCode() , V setValue(V v)

 

 

 

ArrayList

1.       ArrayList 能够随着对象的增减动态改变集合的大小。

2.       能够在指定的位置插入和删除元素。

3.       通过toArray方法转换为一个数组。Object[] toArray(); || <T> T[] T toArray(T array[]);

在第二种形式中必须将调用集合的返回值赋给参数中的数组(否则没结果)

4.       数组不能通过对象名打印。

5.       他没有像List中的List <E> subListfindexlindex)方法

 

LinkedList:

1.       她实现了ListDequeQueue接口。提供链表的数据结构,是一个泛型类。

2.       它能够直接操作链头链尾的element

3.       因为她实现了Deque接口的 pushpop方法,所以可以像堆栈那样进行操作。

 

HashSet

1.       扩展了AbstractSet类,并且实现Set接口,它创建使用一个哈希表来存储元素的集合。

2.       哈希表是通过使用散列码的机制来存储元素的信息的。在散列法中,键的信息内容用于确定一个唯一值,称为哈希码(散列码)。然后,哈希码作为与键相关的数据的索引。键到哈希码的转换是自动完成的,你不会见到哈希码本身,同样,你的代码也不能直接索引哈希表。散列法的好处是她允许 add(),contains(),remove()和size()的执行时间保持不变,即使对于大的组也是一样的。

3.       需要重点注意的是HashSet 不能保证元素的顺序,因为散列法的处理通常不会创建有序集。如果需要有序的存储,最好用TreeSet.或者其他。

4.       她只实现了在Collection中的接口。

TreeMap

实现了NavifableMap接口,他和SortedMap一样是按升序排序的

 

 

 

 

描述

AbstractMap

实现大部分Map接口

EnumMap

扩展AbstractMap,用于enum

HashMap

扩展AbstractMap,用于哈希表

TreeMap

扩展了AbstractMap用于树结构

WeakHashMap

扩展了AbstractMap,用于弱键的哈希表

LinkedHashMap

扩展了HashMap,允许按照插入的顺序来迭代

EdentityHashMap

扩展了AbstractMap,并在比较文档时使用等价的引用。

 

 

 

 

比较器:Comparator

用户可以通过继承这个接口来按照自己定义的方式实现排序。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值