我这些学习笔记,记录的都是我自己认为的知识点,可能以后再看的时候还要翻书,但是可以用来定位到准确的书中示例的位置,减少翻书重找的时间,利于自身知识体系的搭建。 self-transcendence
第14章 集合类
14.1集合类概述
常用的集合有list、set、map
HashSet
Set TreeSet
Collection list ArrayList
Java.lang.Object LinkedList
Map HashMap
TreeMap
--------------------------------------------------------------------------
14.2 Collection接口
Collection接口是层次结构中的根接口。构成Collection的单位称为元素。该接口通常不直接使用,但他提供了添加、删除、管理数据的方法。List接口和set接口都是继承Collection。
方法 |
功能描述 |
Add(E e) |
添加指定对象 |
Remove(Object o) |
移除指定对象 |
isEmpty() |
返回boolean值,判断当前集合是否为空 |
Iterator() |
用于遍历集合中的对象。返回在此Collection的元素上进行迭代的迭代器 |
Size() |
返回int值,获取该集合中元素的个数 |
关于Iterator()如下例
Iterator<String> it=list.iterator();
While(it.hasNext()){
String s=(String)it.next();
}
Iterator的next()方法返回的是Object
---------------------------------------------------------------------------
14.3 List集合
List集合包括List接口以及List接口的所有实现类。List集合中的元素允许重复,各元素的顺序就是对象插入的顺序。类似java数组,用户可通过使用索引(元素在集合中的位置)来访问集合中的元素。
get(int index),set(int index,Object obj)
List接口的常用实现类有ArrayList与LinkedList
A. ArrayList类实现了可变的数组,允许保存所有元素包括null,根据索引可以对集合进行快速的随机访问;缺点是向指定的索引位置插入对象或删除对象速度较慢。
B. LinkedList类采用链表结构保存对象。这种结构的优点是便于向集合中插入和删除对象,需要向集合中插入、删除对象时,效率较高;但对于随机访问集合中的对象时效率较低。
---------------------------------------------------------------------------
14.4 set集合
Set集合中对象没有顺序,且不能包含重复对象。
a. HashSet类实现接口,由哈希表(实际上是一个HashMap实例)支持。它不保证Set的迭代顺序,特别是它不保证该顺序恒久不变
b. TreeSet类不但实现了set接口还实现了sortedSet接口,因此TreeSet类实现的Set集合在遍历集合时按照自然顺序递增排序,也可以按照指定比较器递增排序,就是说可以通过比较器对TreeSet实现的set集合中的对象进行排序
方法 |
功能描述 |
First() |
返回此set中当前第一个(最低)元素 |
Last() |
返回此set中当前最后一个(最高)元素 |
Comparator() |
返回对此set中的元素进行排序的比较器。如果此set使用自然顺序,则返回null |
headSet(E toElement) |
返回一个新的set集合,新集合是toElement(不包含)之前的所有对象 |
subSet(E fromElement,E fromElement) |
返回一个新的set集合,是fromElement(包含)对象与fromElement(不包含)对象之间的所有对象 |
tailSet(E fromElement) |
返回一个新set集合,新集合包含对象fromElement(包含)之后所有对象 |
代码说明:存入TreeSet类实现的set集合必须实现Comparable接口,该接口中的compareTo(Object o)方法比较此对象与指定对象的顺序。如果改对象小于、等于或大于制定对象,则分别返回负整数、0或正整数。
----------------------------------------------------------------------------
14.5 Map集合
Map中不能包含相同的key,每一个key只能映射一个value。Key还决定了存储对象在映射中的存储位置,但不是由key本身决定的,而是通过一种“散列技术”进行处理,产生一个散列码的整数值。散列码通常用作一个偏移量,该偏移量对应分配给映射的内存区域的起始位置,从而确定存储对象在映射中的存储位置。Map集合包括map接口以及map接口的所有实现类。Map允许值对象时null,没有个数限制
方法 |
功能描述 |
put(k key,v value) |
向集合中添加指定的key与value的映射关系 |
containsKey(Object key) |
如果此映射包含指定key的映射关系,则返回true |
containsValue(Object value) |
如果此映射将一个或多个key映射到指定值,则返回true |
get(Object key) |
如果存在指定的key对象,则返回该对象对应的值,否则null |
keySet() |
返回该集合中的所有key对象形成的Set集合 |
values() |
返回该集合中所有值对象形成的Collection集合 |
要用map就用HashMap,如果需要顺序输出,在创建一个完全相同映射关系的TreeMap类实例就行了。
Map<String,String> map=new HashMap<>();
TreeMap<String,String> treemap=new TreeMap<>();
Treemap.putAll(map);