一、Iterable, Collection,list,Set, Map 都是接口
其余都是实现类
二、四个接口
1.collection
是List和Set接口的父接口 List中的方法很多继承于collection
常用方法:增add ,删 remove ,查 get() 获得集合数据的个数size()。
判断是否含有contains()是否相等 equals();
2.List
接口存储一组允许重复,有序(插入顺序)的对象,有下标,插入顺序作为遍历的顺序
3.Set
接口存储一组唯一,无序的对象没下标插入的顺序跟遍历的顺序是不一样的Set接口中没有自有方法,全部继承自Collection接口
4.Map
map中存储是一存储两个值,键(key)和值(Value)合起来叫键值对(entry)map中键和值都可以为任何值(包括Null和集合),但键不可以重复,值可以重复。
不是collection子接口,有独有的方法;
增put(key value) 删 remove(key) 获取get(key)
KeySet()把集合中的key提取到另一个集合中;
Values() 获得集合中的值。
九个类
List 包括Vector LinkedList ArryList
Set 包括 HashSet LinkedHashSet TreeSet
Map 包括 HashMap LinkedHashMap TreeMap
Vector
LinkedList
ArryList
HashSet
LinkedHashSet
TreeSet
HashMap
LinkedHashMap
TreeMap
线程安全
是
否
否
否
否
否
否
否
否
优缺点
增删慢
查找慢增删快
查找慢增删慢查找快
增删查找速度都不错
但没有下标增删查找速度都不错
但没有下标增删查找速度都不错
但没有下标增删查找速度都不错
但没有下标增删查找速度都不错
但没有下标增删查找速度都不错
但没有下标
数据结构
数组
链表
数组
Hash表
Hash表
平衡二叉树
Hash表
Hash表
平衡二叉树
注释:LinkedHashSet和HashSet的区别在于遍历顺序是否和插入顺序一致
泛型
在集合中对集合进行存储数据时很方便,但是取出来的时候不方便,为了便于存取,对可以对集合进行限制,就是让集合可以存储任意类型的数据,但只能存储一种,这种限制的方式就是泛型
例如:
LinkedList Ls=new LinkedList<>(): 即这个集合中只能存储String类型的数据,当使用常用数据类型时 要注意泛型是他们的包装类
迭代器
对存在集合中的数据进行遍历的时候长用到迭代器,迭代器既可以遍历有下标的集合,也可遍历没有下标的结合。迭代器的常规写法
For(遍历的数据的类型 存储数据:遍历的数据)
列如定义了一个HashSet集合,HashSetHs=new HashSet<>()
遍历时for(String s:Hs){}
当遍历Map集合时,需要注意写法
例如遍历一个学籍管理集合
HashMap HS=new HashMap<>();时
for(Entry < Integer ,student >)e:Hs.entrySet()){}
比较器
用于自定义类之间的比较排序
具体代码例子
Public class com1 implement Comparetor {
Public int (student s1 ,student s2)
//先比名字后比年龄
Int co =s1.getName().comparTo(s2.getName)//compareTo 返回的是一个int值根据int值得大小判断排序
If(co==0)//当两值相等的时候,在进行年龄的比较排序
{
Return s1.getAge()-s2.getAge;
}
Else return co;
}
先比成绩再对名字进行排序
Public class com2 implement Comparetor {
Public int (student s1 ,student s2)
//先比名字后比年龄
Int co =s1.getName().comparTo(s2.getName)//compareTo 返回的是一个int值根据int值得大小判断排序
If(s1.getAge()-s2.getAge==0)//当两值相等的时候,在进行年龄的比较排序
{
Return s1.getName().comparTo(s2.getName);
}
Else {
return s1.getAge()-s2.getAge
}
}