LIst 接口实现类的选择
ArrayList : 底层采用数组实现,遍历元素、追加元素速度快,中间插入和删除元素速度慢,线程不安全。
ArrayList使用最广泛,集合元素增加或删除操作不频繁时使用。最适合查询。
Vector; 与ArrayList类似,底层也用数组实现。但Vector是线程安全的性能要低于ArrayList。
LinkedList : 采用双向链表实现,元素空间不连续。遍历元素速度慢,中间插入和删除元素速度快。一般用于需要在集合的中间位置,频繁增加或删除元素时使用。
Set接口
Set 接口实现类,利用元素的hashCode和equals放法,判断集合中的元素是否重复。
如果按希望按元素的属性值去去除重复数据,需要重写hashCode和equals放法。
Set接口实现方法
add(Object) -------> 向集合中添加元素
renove(Object)------> 将元素从集合移除
size() -----> 得到集合的长度
TreeSet :按指定的排序规则对元素进行排序,速度慢,需要由Conparator比较器指定排序规则。当Conparator比较Compare方法,返回0时,表示元素重复。
Map
Map Map接口不是Collection的子接口。Map接口实现类中,一个元素包含两个对象:键对象(key)和值对象(value)。
Map<String,Student> map;
Map接口中,键对象和值对象可以是任何类的实例,并且键对象不能重复。
常用方法
put(key,value) -----> 向集合中添加元素
get(key) -----> 根据键对象找到值对象
keySet() -----> 得到键对象的集合
values() -----> 得到值对象的集合
remove(key) -----> 根据键对象移除整个元素
containsKey(key) -----> 判断键对象在集合中是否存在
案例
//Map接口 HashMap实现类
Map<String,Son> map = new HashMap();
map.put("tory",new Son("tory",20,3000));
map.put("tom",new Son("tom",20,2000));
//get(k) 当key不同时,是做添加,当key不同时,是做修改。
System.out.println(map.get("tory"));
//containsKey(k) 判断集合中K是否存在
System.out.println(map.containsKey("tory1"));
//remove(k) 通过k移除v
// map.remove("tory");
//keySet() 得到键对象集合
Set<String> keySet = map.keySet();
// values() 得到值对象集合 返回 Collection集合
Collection<Son> collection = map.values();
//map 集合的遍历
//通过键集合进行遍历
for (String key:keySet){
System.out.println(key + "" +map.get(key));
}
System.out.println("======================");
//通过值集合
for(Son e : collection){
System.out.println(e);
}