JAVA Programming - Tips 2 - DataStructure

Collection(List,Set) vs Map -- Ross.bu
1. Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。
相当于对Array进行类似操作的类——Arrays。
Collections.max(Collection coll); 取coll中最大的元素。
Collections.sort(List list); 对list中元素排序

2、Arrays类,专门用来操作array。arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.arraycopy():array的复制。

3. Map,Collection
Collection (object)
--List:1.取出来的顺序可能和放入顺序不同。2. allow 重复
--ArrayList / LinkedList / Vector
--Set : 不能含有重复的元素
--HashSet /LinkedHashSet / TreeSet
Map (key-value)
--HashMap
--HashTable
--TreeMap
HashSet内部由HashMap来维护数据/TreeSet内部由TreeMap来维护数据
WeakHashMap是一种节省存储空间的容器,它允许垃圾回收器自动清理那些没有普通引用的“键”和“值”。实际上,WeakHashMap自动使用WeakReference包装了每一个“键”对象。
Note: People always compare Set & List & Map ignoring Collection Interface

List: 1. allow 重复 2.取出来的顺序可能和放入顺序不同(散列)
Set : 1. not allow 重复 2.Set中大量使用Map的实现类
Map : 1. not allow 重复 (key) 2. key --- value 对
Hash: 无论Set List Map 带有Hash字样的结构存取快速 HashSet LinkedHashSet HashMap LinkedHashMap
Tree: 无论Set List Map 带有Tree字样的结构都有排序 TreeSet TreeMap (实际上在TreeSet中是使用了TreeMap的)
Linked: 无论Set List Map 带有Linked字样的结构都有存入顺序 LinkedHashSet LinkedList LinkedHashMap
Sorted: 我们看不到任何Sorted结构其实是因为这些不过是理论上的层次模型,未必真的实用
TreeSet implements SortedSet && SortedSet extend Set 这里可以看出其实Tree结构的所谓排序功能,
其实comparator()定义是在SortedSet 中制定的 同理我们可以推论出来:
TreeMap implements SortedMap && SortedMap extend Map

两个过时的结构 HashTable(Map) Vector(List)
取代他们的结构 [b]HashMap [/b] [b]ArrayList[/b]
在新程序中,不应再使用过时的Vector、Hashtable和Stack容器

[color=red]* [/color]rehashing 导致 Hash的结构类型在做更新(add,update,delete)会慢下来
[color=red]*[/color] linked 并不是 Sorted 的含义 LinkedHashSet只不过是有个链表在维护存入顺序(先进后出)
[color=red]*[/color] 当元素个数固定,用Array,因为Array效率是最高的.
[color=red]*[/color] Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。 (not allowd duplicate)
使用values()抽取value序列,将map中的所有values生成一个Collection。(allowed duplicate)


实战的思考过程
[b]* 考虑是否可以重复 yes --> ArrayList 如果不可以(要求唯一性) --> HashSet 或者 HashMap
* 考虑是否是key - value结构 yes ----> HashMap 然后考虑是否排序 yes --> TreeMap[/b]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值