Java容器主要有List、Set、Map三大类。而List和Set的顶层接口都是Collection。
ArrayList就是-个动态的数组
LinkedList基于链表的存储结构
特点:
1. ArrayList查询快、增删慢2. LinkedList查询慢、增删快
list
list继承自Collection接口,所以Collection接口中有的功能List都可以使用。
List集合是有索引的,有序的,且与set集合不同list列表的元素可以重复。
使用案例
public class day1 {
public static void main(String[] args) {
List<String> list=new ArrayList<>();
list.add("c");
list.add("b");
list.add("a");
list.add("c");
System.out.println(list);
System.out.println(list.get(2));
}
}
首先我们定义一个ArrayList,然后我们在里面存入四个元素,然后打印输出数组,list可以获取单个元素,我们可以试一下获取第二个元素
当然我们也可以使用for循环进行数组的遍历。
方法一
for (int i=0;i<list.size();i++){
String s=list.get(i);
System.out.println(s);
}
方法二
for (String s1 : list){
System.out.println(s1);
}
set
Set集合它所存储的元素是不可重复的,并且元素都是无序的
Set集合不能直接获取某个元素,只能通过迭代器遍历元素。
Set集合就像一个垃圾箱不用排序直接把东西全部丢进去,因为没有任何的顺序所以元素不能重复。
使用方法
public class day1 {
public static void main(String[] args) {
Set<String> set=new HashSet<>();
set.add("z");
set.add("g");
set.add("m");
set.add("q");
System.out.println(set);
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
String s=iterator.next();
System.out.println(s);
}
}
}
首先我们定义它的子类HashSet(无序的),然后我们在里面存入四个元素,打印数组所有元素。
set的遍历通过set.iterator(); 可以获得一个Iterator迭代器,通过while循环使用iterator.hasNext()获得一个随机的元素直到获取完毕结束。
Map
基于键值对形式存储的数据结构
在Map中key是不允许重复的,value值是可以重复。
Map会把所有的key存放- - 个set集合中。
map的特点:无序,键值对,键不能重复,值可以重复,键重复则覆盖,没有继承Collection接口。
使用方法
public class day1 {
public static void main(String[] args) {
Map<String,Object>map=new HashMap<>();
map.put("name","杨松岭");
map.put("age","18");
map.put("sex","男");
System.out.println(map);
Set<String> keySet=map.keySet();
Iterator<String> iterator1 = keySet.iterator();
while (iterator1.hasNext()){
String key = iterator1.next();
Object value=map.get(key);
System.out.println(key+"--->"+value);
}
}
}
Map是有键值对的String是键,Object是值。存入一个人的基本信息,进行输出。
Map的遍历,获取map中所有key值的set集合,通过set.iterator(); 可以获得一个Iterator迭代器,通过while循环使用iterator1.hasNext(),通过映射拿到他的key值。