List集合,Set集合都是继承Collection父接口。
Map没有继承Collection父接口,Map是键值对集合(key到value的映射),是把键对象和值对象进行映射的集合。
1.List
list是一种有序集合,按照对象进入的顺序保存对象,并且允许重复对象,插入多个null值。
list查找效率快,但增删效率慢,增删会引起其他元素位置发生改变。
特点:有序,允许重复,查询快,增删慢
实现类有:
List 的实现类主要有 ArrayList、LinkedList
ArrayList底层是通过数组实现,在查询效率上会高很多
LinkedList是底层用链表结构存储数据的,适合数据的动态插入和删除,随机访问和遍历速度比较慢。
代码实现
// 创建一个list的集合
List<String> list=new ArrayList<>();
// 先集合中添加数据
list.add("a");
list.add("b");
list.add("c");
list.add("a");
// 打印集合下标为1的数据
System.out.println(list.get(1));
// 遍历集合
for (String s : list) {
System.out.print(s+" ");
}
2.Set
set是无序的集合,不是按照对象进入的顺序保存,不可重复,只允许一个null值出现。
set检索元素效率低,而增删效率快,增删不会引起其他元素位置发生改变。
特点:无序,不允许重复,查询慢,增删快
实现类有:
Set的实现类主要有HashSet
HashSet底层使用的是HashMap哈希表结构储存,无序的 所以要遍历Set我们需要使用迭代器
代码实现:
// 创建一个set集合
Set<String> set=new HashSet<>();
// 通过add向set中添加数据
set.add("x");
set.add("z");
set.add("x");
// 打印set
System.out.println(set);
// 创建迭代器
Iterator<String> iterator = set.iterator();
// 通过hasNext查找数据
while (iterator.hasNext()){
// 找到有数据 用s 来接受数据
String s = iterator.next();
System.out.println(s);
}
3.Map
map以键值对的方式存储元素,根据键得到值,所有Map集合的Key是无序不可重复的,key和value都是引用数据类型,存的都是内存的地址。
特点:键值储存,key无序不可重复
实现类:
Map集合的实现类主要为HashMap。
HashMap底层采用哈希表的数据结构,非线程安全的。
代码实现
// 创建一个map key为string类型 数据是object类型
Map<String,Object> map=new HashMap<>();
// 添加数据 要通过key 添加数据
map.put("name","李四");
map.put("age",20);
map.put("sex","男");
// 通过keyset获取所有的key并把他们保存在set集合
Set<String> key = map.keySet();
// 创建迭代器
Iterator<String> n = key.iterator();
// 通过hasNext查找key
while (n.hasNext()){
// 找到key用next来接收他
String next = n.next();
// map中获取数据需要key next 是我们获取到的key 所以我们使用get(key)来获取数据 然后这个数据用object类型接收
Object o = map.get(next);
System.out.println(o);
}