这是从毕向东老师的视频课上总结的知识点。 大家如果感兴趣的话,可以到黑马程序员的官网下载老师的Java基础课。
我这个排版实在太乱了,也不知道怎么回事,Tab键不好使啊。建议大家看视频吧,讲的非常好。
* Collection
* |--List:元素是有序的,元素可以重复。因为该集合体系有索引。
* |--ArrayList: 底层的数据结构使用的是数组结构。特点:查询速度很快,但是增删稍慢。线程不同步。
* ArrayList()构造一个初始容量为10的空列表。
* |--LinkedList:底层使用的是链表结构。特点:增删速度很快,查询稍慢。
* |--Vector:底层是数组数据结构。Java1.0开始;线程同步。特点:操作慢。被ArrayList替代了。
*
* |--Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复
* |--HashSet: 底层数据结构是哈希表。
* HashSet是如何保证元素唯一性的呢?
* 是通过元素的两个方法,hashCode和equals来完成。
* 如果元素的hashCode值相同,才会判断equals是否为true.
* 如果元素的hashCode值不同,不会调用equals。
* 注意:对于判断元素是否存在,以及删除等操作,依赖的是元素的hashcode和equals方法。
*
* |--TreeSet: 底层数据结构是二叉树。可以对Set集合中的元素进行排序,按照自身的compareTo()的返回值排序。
* 保证元素唯一性的依据:compareTo()方法return 0。返回0值时TreeSet认为两个元素相同,只存储一个。
*
* TreeSet排序的第一种方式:让元素自身具备比较性。元素需要实现Comparable接口,覆盖compareTo方法。
* 这种方式也称为元素的自然顺序,或者叫做默认顺序。
* TreeSet排序的第二种方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。
* 定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。
* 定义一个类,实现Comparator接口,覆盖compare方法。
* 当两种排序都存在时,以比较器为主。
* |--Map
* |--Hashtable:底层是哈希表数据结构,不可以存入null键null值,该集合是线程同步的。JDK1.0
* |--HashMap:底层是哈希表数据结构,允许使用null键null值,该集合是不同步的。JDK1.2
* |--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。
/*
* List:
* 特有方法。凡是可以操作角标的方法都是该体系特有的方法。
* 增
* add(in);
* 删
*
* 改
*
* 查
* get(index);
* subList(from, to);
* listIterator();
*
* List集合特有的迭代器。ListIterator 是Iterator的子接口。
*
* 在迭代时,不可以通过集合对象的方法操作集合中的元素。
* 因为会发生ConcurrentModificationException异常
*
* 所以,在迭代器时,只能用迭代器的方法操作元素,可是Iterator方法有限,只能对元素进行判断、取出、删除的操作。
* 如果想要其他的操作如添加、修改等,就需要使用其子接口,即ListIterator。
* 该接口只能通过List集合的listIterator()获取
* **/
/*
* Map集合:
* 该集合存储键值对,一对一对往里存,而且要保证建的唯一性。
* 1. 添加
* put(K key, V value);
* putAll();
* 2. 删除
* clear();
* remove(Object key);
* 3. 判断
* containsKey(Object key);
* containsValue();
* isEmpty();
* 4. 获取
* get(Object key);
* size();
* values();
* entrySet();
* keySet();
* map集合的两种取出方式:
* 1. keySet: 将map中所有的键存入到Set集合。因为set具备迭代器。
* 所以可以迭代方式取出所有的键,再根据get方法。获取每一个键对应的值。
* Map集合的取出原理:将map集合转成set集合。再通过迭代器取出。
*
* 2. Set<> entrySet:将map集合中的映射关系存入到set集合中。而这个关系的数据类型就是Map.Entry.