Set、List、Map的遍历总结

不知道为什么,昨天写的这篇文章不见了。早上重新补上来吧,,以后写东西还是得先写在电脑里面,然后在发布出来才行。

集合类一直让我感觉头痛,因为我老是搞混淆,可能是基础不够扎实的原因吧。现在专们花个时间来总结下,以后混淆了就直接来查看便是。那么,就先来看看各种集合类的比较表吧。

集合类比较表

是否有序

是否允许元素重复

Collection

List

Set

AbstractSet

HashSet

TreeSet

是(用二叉树排序)

Map

AbstractMap

HashMap

TreeMap

是(用二叉树排序)

常用的集合类介绍

Collection<–List<–Vector

Collection<–List<–ArrayList

Collection<–List<–LinkedList

Collection<–Set<–HashSet

Collection<–Set<–HashSet<–LinkedHashSet

Collection<–Set<–SortedSet<–TreeSet

Set(集):(HashSet)无序不重复

List(ArrayList和LinkedList)(列表):无序可重复

Map(映射,键值对):(HashMap)有序key值不重复

Collection:父接口Set:接口—实现类: HashSet、LinkedHashSetList:接口—实现类:LinkedList,Vector,ArrayListSortedSet:接口—实现类:TreeSet

1.List总结

(1)所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];

(2) 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

(3) 所有的List中可以有null元素,例如[ tom,null,1 ];

(4) 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

List:有序列表,允许存放重复的元素;

实现类:(1)ArrayList:数组实现,查询快,增删慢,线程不安全,轻量级;(2)LinkedList:链表实现,增删快,查询慢;(3)Vector:数组实现,线程安全,重量级。

例:levit应用中使用集合分布表:

集合类型

应用数量

ArrayList

184处

LinkedList

2处

Vector

0

分析:从以上的分析结果来看ArrayList是用的最多的,Vector没有用到(有性能问题,不建议使用)。

Vector和ArrayList的区别

线程安全线程安全

数组

List遍历的三种方法

ArrayList

public static void testArrayList(){//ArrayList 有序允许重复List<String> list = new ArrayList<String>();list.add("我是小颜");list.add("我是小颜");list.add("我是幕燃");list.add("我是幕燃2");//遍历第一种 getfor (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//遍历第二种 IteratorIterator<String> it = list.iterator();while(it.hasNext()){String str = (String)it.next();System.out.println(str);}//遍历第三种 forfor (String str : list) {System.out.println(str);}}</span><span style="font-size:14px;"></span>

LinkedList

public static void testLinkedList(){//有序可重复List<String> list = new LinkedList<String>();list.add("我是哈哈");list.add("我是哈哈");list.add("我是幕燃");list.add("我是幕燃2");//遍历第一种 getfor (int i = 0; i < list.size(); i++) {System.out.println(list.get(i));}//遍历第二种 IteratorIterator<String> it = list.iterator();while(it.hasNext()){String str = (String)it.next();System.out.println(str);}//遍历第三种 forfor (String str : list) {System.out.println(str);}}

2.Set总结

(1)Set实现的基础是Map(HashMap);

(2) 无序集合,Set中的元素是不能重复的,如果使用add(Object obj)方法添加已经存在的对象,则会覆盖前面的对象,允许使用null元素;

(3)HashSet 的后台有一个HashMap;初始化后台容量;只不过生成一个HashSet的话,系统只提供key的访问;如果有两个Key重复,那么会覆盖之前的;

实现类HashSet:equals返回true,hashCode返回相同的整数;哈希表;存储的数据是无序的。

子接口SortedSet,对Set排序实现类 :TreeSet:使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序;二叉树实现的;

午餐,晚餐。或许吃得不好,可是却依旧为对方擦去嘴角的油渍。

Set、List、Map的遍历总结

相关文章:

你感兴趣的文章:

标签云: