JAVA笔记--集合框架

两个重要的接口:

Collection接口 又包括 Set(HashSet TreeSet) 和 List(ArrayList Vector)

util Map接口(HashMap TreeMap HashTable)


List  有序可重复

ArralyList顺序结构 线程不安全的(不能保证同步) 

method:

  add()

  get(i) 返回第i个元素

  contain() 判断是否包含某元素

  indexOf() 返回下标

  toArray() 转换为对象数组 Object[] objs = ...

  iterator() 返回迭代器  Iterator it = ...Iterator有next()方法和hasNext()方法

       

LinkedList 离散结构 线程不安全的(不能保证同步)

  add()

  具有ArrayList几乎全部的method

  比ArrayList多实现了队列的方法

  addFirst() 

  addLast()

  peek() 获取但不移除第一个元素

  pop() 弹出第一个元素 并删除


Set 

线程不安全(不同步,多线程涉及) 允许null值 无序的 可以添加重复元素但加不进入

无法使用for遍历 可以使用迭代器Iterator it = set.iterator while(it.hasNext())

HashSet

  add()

  hasNext() 如果有下一个元素 返回true 并指向一个元素

  next() 返回迭代器的下一个元素 如果不知道下一个元素的数据类型 可以用Object obj;

TreeSet

LinkedSet 离散结构 有序的 其余特点与Set相同

LinkedHashSet 

  

添加对象到集合里 即使属性相同 也认为是两个不同对象   

重写hashCode()和equals()方法 可以解决上面的问题

重写hashCode():基本数据类型可以直接返回其hashCode 或者返回定值(感觉hashCode本身就很扯)

重写equals():若果每一个基本数据类型的equals返回true,则返回true。

集合的add()方法调用了对象的equals方法。

  

Map 

无序的

键值对 不能有重复的键

键、值都可以为null

通过key来遍历map

无法添加key相同而value不同的元素

HashMap HashTable TreeMap LinkedHashMap 

  put(key,value)  添加元素

  Set keys = map.ksySet(); 键值集合

  使用迭代器访问keys

  map.get(key) 输入key返回value

  

LinkedHashMap

有序的

HashTable

基于hash表实现Map接口

键和值都不能是null 值可以重复

线程安全的(同步)


TreeMap

基于红黑树

根据键值自然排序(依赖于Comparator接口)

键的数据类型一致 键不允许是null















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章