List
Collection 老祖先,接口(interface)
List 子接口
ArrayList,LinkedList,Vector 实现类
Set 子接口
HashSet(无序),TreeSet(有序)
ArrayList:动态数组,表示数组长度可变
ArrayList,LinkedList 使用方法完全一样, 区别
数据存储方式不一样,称为不同的数据结构
ArrayList:基于数组实现(优点:连续存放,查找速度比较快,缺点是增加元素或者删除元素比较慢),
LinkedList基于链表实现(缺点:不连续存放,查找速度比较慢,优点:增加元素或删除元素比较快)。
Vector 向量:基于数组实现的,但是已经过时,现在都用ArrayList。
Set
集合中存储的是对象的引用,对象存在堆(heap)里
注意不需要讲所有的方法
迭代器(遍历器)
迭代器用于遍历集合中的元素
Iterator it=al.iterator();
while(it.hasNext())
{
处理元素;
}
for(Iterator it=al.Iterator;it.hasNext())
{
处理元素
}
调用it.next()获取下一个元素,同时将指针往后指。
List共性
元素是有索引的,元素可以重复
Set
元素无索引,不可以重复(不可以放同样的元素,放不进去)
HashSet(无序),TreeSet(有序)
数据存储方式
HashSet:哈希表
TreeSet:二叉树
Map
方法一:传入的对象所属的类,必须实现Comparable
方法二:初始化TreeSet时,传入一个比较器(比较器是一个实现了Comparator的类的对象)作为一个构造参数。
========================================================================================================
Collection 接口 和 Map接口 集合框架的两个老祖先
Collection(接口) Map(接口) <和Set很像>
/\ / | \
/ \ / | \
/ \ / | \
List(接口) Set(接口) HashMap,TreeMap,HashTable
/ \ (实现类)
/ \
/(实现类) (实现类) \
ArrayList,LinkedList,Vector HashSet,TreeSet
ArrayList基于数组 删除速度比较哦慢,查找速度比较快
LinkedList基于链表 查找速度比较慢,增加删除速度比较快
其中Collection 是单列集合,Map是双列集合
key-value 键值对
键不可以重复,value可以重复
Map
HashMap
TreeMap
HashTable
HashTable:底层存储结构是哈希表,键和值都不可以是null。已过时。
HashMap: 底层是哈希表,键值都可以是null。
TreeMap: 底层是二叉树,支持键排序
keyset,valueset,entryset(Map.Entry)
读取方式
1.获得所有键的集合keyset
2.获得所有值的集合valueset
3.获得所有条目entryset
entry=一行,一个条目(包含键和值)
TreeMap:有序的(键是有序的)
关于泛型