集合分为list、set和map。list排列有序,可重复;set排列无序,不可重复;map键不可重复,值可重复,排列无序。
一般遍历用for循环,但是set和map无序,所以要用迭代器。
迭代器是将数据放在一个容器中,并排成一排,迭代器有一个游标,再未遍历之前,这个游标放在第一位元素的前面,一般是迭代器iterator.hasNext判断游标后面是否有元素,iterator.next是将游标向后移一位。
list集合分为ArrayList、vector、LinkedList
ArrayList:排列有序,可重复,底层是数组,增删慢,查询快,扩容机制是当前容量的1.5倍+1,线程不安全。
vector:排列有序,可重复,底层是数组,增删慢,查询快,扩容机制是当前容量的1倍,线程安全。vector因为是线程安全的,所以它的查询速度没有ArrayList快。
LinkedList:排列有序,可重复,底层是链表,增删快,查询慢,线程不安全
set集合分为HashSet、TreeSet和LinkedHshSet
HashSet:排列无序,不可重复,存取速度快
TreeSet:排列无序,不可重复,排序存储
LinkedHashSet:排列无序,不可重复,一般不用
map集合分为HashMap、TreeMap、hashtable
HashMap:排序无序,键不可重复,值可重复,线程不安全,键值都可为null
TreeMap:排列无序,键不可重复,值可重复
hashtable:排列无序,键不可重复,值可重复,线程安全,键值都不可为null
list迭代器遍历
List<String> list = new ArrayList<>();
list.add("a");
list.add("a");
list.add("b");
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
set迭代器遍历
Set<String> set = new HashSet<>();
set.add("a");
set.add("a");
set.add("b");
Iterator<String> iterator = set.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
map迭代器遍历
因为map里面存储的是键值对,如果要遍历的话,需要把map里的对象看成一个整体
Map<Integer,String> map = new HashMap<>();
map.put(1,"a");
map.put(1,"b");
map.put(2,"a");
Set<Map.Entry<Integer, String>> set = map.entrySet();
Iterator<Map.Entry<Integer, String>> iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
相关文章
暂无评论...