java集合体系
Collection(单列集合的最顶层接口)
LIst(list接口) | 特点 |
LinkedList | 元素可以重复,存储有顺序,查询慢,增删快,线程不安全 |
ArrayList | 元素可以重复,存储有顺序,查询快,增删慢,线程不安全 |
Vector | 已过时,被ArrayList取代 |
Set (set接口) | |
HashSet | 不可以存储重复元素,存储没有顺序,存储方式由hash表实现 |
LinkHashSet | 存储有序,不能存储重复元素,存储数据由链表和hash表构成 |
Map
Map(双列集合最顶层接口) | 特点 |
HashMap | 一次要存储两个元素一个为Key,一个为Value,key不可以重复,Value可以重复,存储没有顺序 |
LinkHashMap | 一次要存储两个元素一个为Key,一个为Value,key不可以重复,Value可以重复,存储有顺序 |
HashTable | 已过时 |
Set与Map集合注意事项
set集合不能存储重复数据,Map的key不能有重复数据,他们底部都是由Hash表实现,默认先比较hash值,再比较地址值,然后比较内容,如果类中间没有重写equals和hashCode方法还是比较地址值,但是我们自定义的类型,我们认为属性全部相同就是一样的对象,所以当我们使用Set和Map集合存储自定义类型得时候我们要重写对象得equals和hashCode方法
集合遍历
List和Set集合遍历
方法一: 获取迭代器,使用while循环遍历集合
注意:使用迭代器遍历集合和使用增强for遍历集合的时候不能对集合,里面的元素进行增删操作
//创建一个set集合
HashSet<String> hashSet = new HashSet<>();
//为集合里面添加元素
hashSet.add("zhangsan");
hashSet.add("lisi");
hashSet.add("wangwu");
hashSet.add("zhangsan");
//获取集合迭代器
Iterator<String> iterator = hashSet.iterator();
//使用while循环遍历集合 调用iterator.hasNext()判断是否有下一个元素
while (iterator.hasNext()){
// 调用next方法获取下一个元素
System.out.println(iterator.next());
}
方法二:使用增强for遍历
/创建一个set集合
HashSet<String> hashSet = new HashSet<>();
//为集合里面添加元素
hashSet.add("zhangsan");
hashSet.add("lisi");
hashSet.add("wangwu");
hashSet.add("zhangsan");
//使用增强for遍历集合
for(String s: hashSet){
//s为集合的元素
System.out.println(s);
}
方法三:list集合专门的遍历方式,set集合不可以使用
/创建一个set集合
List<String> list = new ArrayList<>();
//为集合里面添加元素
list.add("zhangsan");
list.add("lisi");
list.add("wangwu");
list.add("zhangsan");
//使用普通for进行遍历
for(int i=0; i<list.size(); i++){
//再调用list.get(i)方法获取指定引索位置的元素
System.out.println(list.get(i));
}
Map集合遍历
方法一:调用entrySet方法获取entry集合,使用迭代器遍历集合
//创建map集合
Map<String,String> map = new HashMap<>();
//添加数据
map.put("邓超","孙俪");
map.put("李晨","范冰冰");
map.put("刘德华","柳岩");
map.put("黄晓明","Baby");
map.put("谢霆锋","张柏芝");
//调用map对象得entrySet方法,获取一个Set集合,里面存储着entry对象
Set<Map.Entry<String, String>> set = map.entrySet();
//获取Set集合得迭代器
Iterator<Map.Entry<String, String>> iterator = set.iterator();
//循环遍历set集合 iterator.hasNext判断是否还有下一个元素
while (iterator.hasNext()){
//获取每一个entry对象
Map.Entry<String, String> entry = iterator.next();
// 获取key 获取value
System.out.println(entry.getKey()+"="+entry.getValue());
}
方法二: 调用keySet方法获取key得set集合,增强for遍历
//创建map集合
Map<String,String> map = new HashMap<>();
//为map集合添加数据
map.put("a","aaaa");
map.put("b","bbbb");
map.put("c","cccc");
map.put("d","dddd");
map.put("e","eeee");
map.put("f","ffff");
//调用map的keySet方法获取key的set集合
Set<String> set = map.keySet();
//使用增强for遍历set集合
for (String s : set) {
//调用map的get方法获取key上对应的value
System.out.println(map.get(s));
}
如果我的文章有什么错误,或者你有什么好的意见或者是建议,或者有什么不明白,有Java问题需要讨论都可以联系我
QQ : 1833784239
我用java书写人生。