|--List<E>接口 列表。不同步。有序(存储和读取顺序一致),有整数索引,可重复
add(index,E) //指定索引位置添加元素
E remove(index) //删除指定元素并返回被删除的元素,索引不存在抛异常
E get(index) //根据索引返回元素,索引不存在抛异常
E set(index,E) //修改指定索引元素,并返回修改前的元素
int indexOf(object)
int lastIndexOf(object)
list subList(from,to)
ListIterator listIterator()|(index); //获取列表迭代器|从指定位置开始迭代。可以在迭代过程中对元素的增删改查
new Vector<E> 内部是数组数据结构;同步。(除了此几乎都不同步)
Enumeration<E> elements() //获取所有元素
new ArrayList<E> 数组结构;查询快,增删慢。初始10容量;
new LinkedList<E>() 链表结构;增删快,查询慢。
addFirst(E)|addLast(E) //添加元素
E getFirst()|getLast() //获取元素。如果链表为空抛出异常
E removeFirst()|removeLast()//删除并返回元素。如果链表为空抛出异常
E peekFirst()|peekLastt() //获取元素。如果链表为空,返回null
E pollFirst()|pollLast() //获取并删除
offerFirst()|offerLast() //添加
|--Set 接口。不同步
特点:无序(存入和取出顺序不一致);不重复(元素唯一,只可包含一个null元素);无索引。
去重原理
add()方法。首先会使用当前集合中的每一个元素和新添加元素进行比较
通过hashCode()方法比较哈希值是否相等,不相等则添加,否则
通过equals()方法进行比较内容是否相等,都不相等则添加,否则认为重复不添加
new HashSet() //内部数据结构是哈希表。不同步。
new TreeSet() //底层数据结构为二叉树。使用元素的自然顺序排序。
(Collection<? extends E> c) //构造包含指定collection元素的新TreeSet,按照其元素自然顺序排序
(Comparator<? super E> c) //构造空TreeSet,根据指定比较器进行排序
对象实现排序的2种方式
1 元素具有排序功能,元素实现Comparable接口,重写compareTo(T o)方法
2 使用比较器,让集合自身具备比较功能
定义一个类作为比较器实现Comparator接口,重写compare(T o1,T o2)方法,把此比较器对象传递给TreeSet
重写方法返回值作用,当前元素与传入元素比,从小到大
返回<0:当前元素比传入元素小,当前对象小于指定对象
返回=0:当前元素与传入元素相等,当前对象等于指定对象,不存
返回>0:当前元素比传入元素大,当前对象大于指定对象
|----Map<K,V> 接口 双列集合。常用语处理有对应关系的数据
特点:存储方式是键值对方式,一个键只能映射一个值
键不可重复(需重写hashCode()和equals()方法),值可以重复
键是无序的
映射,添加,覆盖
V put(K,V) //如果K存在则覆盖V并返回原来的V。如果K不存在返回null
删除
V remove(Object key) //删除。根据指定key删除 键值对,并返回key所对应的value,如果没有删除成功则返回null
clear() //清空所有对应关系
判断
boolean containsKey(Object key) //判断是否包含键
boolean containsValue(Object value) //判断是否包含值
boolean isEmpty() //判断集合是否为空
获取
int size() //获取键值对个数
V get(Object key) //通过键获取值,如果没有返回null。可以通过返回null判断是否包含指定键
Set<K> keySet() //获取所有键的Set集合。因为键不可重复,所以返回Set
Collection<V> values() //获取所有值的Collection集合。因为值可以重复,所以返回Collection
返回的实现类是Values内部类,没有索引,所以不可以操作索引
Set<Map.Entry<K,V>> entrySet() //返回键值对的Set集合
Map.Entry<K,V> //静态内部接口。映射项(键-值)
K getKey() //获取键
V getValue()//获取值
new HashMap<K,V>() 内部结构是哈希表,不同步。允许null作为键值。
K为自定义对象时,如果保证唯一,元素对象需要覆盖hashcode和equals方法
new Hashtable<K,V> 内部结构是哈希表,同步。不允许null作为键值。
new Properties() 持久的属性集。通常用于操作以键值对形式存在的配置文件。用于存储键值对型文件的配置信息,可以和IO技术相结合。
特点:键和值都为字符串类型;数据可保存在流中,从流中加载数据。
Object setProperty(String key,String value) //存,键相同,值覆盖。
String getProperty(key) //取
Set<String> stringPropertyNames() //返回所有键
结合流
load(InputStream in) //读取到此对象中。注意:文件数据是键值对。
(Reader reader)
list(PrintStream out) //从集合(流)中读取数据显示到目的out。用于调试
(PrintWriter out) //将属性集写入流指向的文件
store(OutputStream out,String 描述) //写入。关联流,将信息写入文件。描述尽量不要写中文,文件中#注释信息,键=值 格式存入。
(Writer writer,String comments)
new TreeMap<K,V>()|(比较器) 可排序。内部结构是二叉树,不同步。可以对Map集合中的Key排序。