Collection接口
- 是List、Set和Queue接口的父接口
- 定义了可用于操作List、Set、Queue的方法--增删改查
1、List接口及其实现类--ArrayList
- List是元素有序并且可以重复的集合,被称为序列。
- List可以精准的控制每个元素的插入位置,或者删除某个位置元素。
- ArrayList--数组序列,是List的一个重要实现类。
- ArrayList底层是由数组实现的。
注意:对象存入集合都变成Object类型,取出时需要类型转换。
2、ArrayList常用的方法
-
添加
ArrayList list = new ArrayList(); //直接在列表后追加 list.add(obj); //在指定位置添加 list.add(0, obj); Object[] objs = {obj1, obj2}; //在列表后追加一个新的列表 list.add(Arrays.asList(objs)); //在指定位置添加一个新的列表 list.add(0, Arrays.asList(objs))
-
获取List中元素的个数
int size = list.size();
-
获取List中的元素
Object obj = list.get(index);
-
修改List中某个元素的值
//代表指定索引为0的元素替换为obj5 list.set(0, obj5);
-
删除List中的某个元素
//从列表中移除第一次出现的指定元素(如果存在)。如果列表不包含元素,则不更改列表。 list.remove(obj5); //移除列表中指定位置的元素。将所有的后续元素向左移动(将其索引减1)。返回从列表中移除的元素。 list.remove(index); //从列表中移除指定collection中包含的其所有元素。 Object[] objs = {obj1, obj2}; list.removeAll(Arrays.asList(objs));
-
获取某个元素在List中的索引位置
//indexOf返回某个元素在list中第一次出现的索引 int index = list.indexOf(obj); //lastIndexOf返回某个元素在list中最后一次出现的索引 int lastIndex = list.lastIndexOf(obj);
-
判断list是否包含某个或多个对象
boolean exist = list.contains(obj); Object[] objs = {obj1, obj2}; boolean exist1 = list.containsAll(Arrays.asList(objs));
注意:
1、如果想要在某个List中只放某个指定类及其子类的实例时,需要使用到泛型,泛型集合中,不能添加泛型规定的类型及其子类型以外的对象,否则会报错!
2、泛型不能使用基本类型!
3、Set接口及其实现类--HashSet
- Set是元素无序并且不可以重复的集合,被称为集。
- HashSet -- 哈希集,是Set的一个重要实现类。
注意:Set中的元素是不可重复的
4、Map接口和HashMap类
- Map提供了一种映射关系,其中的元素是以键值对(key-value)的形式存储的,能够实现根据key快速查找value。
- Map中的健值对以Entry类型的对象实例形式存在。
- 键(key值)不可重复,value值可以。
- 每个键最多只能映射到一个值。
- Map接口提供了分别返回key值集合,value值集合以及Entry(键值对)集合的方法。
- Map支持泛型,形式如:Map<K,V>。
- HashMap是Map接口的一个重要实现类,也是最常用的,基于哈希表实现。
- HashMap中的Entry对象是无序排列的。
- Key值和value值都可以为null,但是一个HashMap只能有一个key值为null的映射(key值不可重复)。
5、HaseMap常用方法
clear()
从此映射中移除所有映射关系。containsKey(Object key)
如果此映射包含指定键的映射关系,则返回true。containsValue(Object value)
如果此映射将一个或多个键映射到指定值,则返回true。entrySet()
返回此映射中包含的映射关系的set视图equals(Object o)
比较指定的对象与此映射是否相等get(Object key)
返回指定键所映射的值,如果此映射不包含该键的映射关系,则返回nullhashCode()
返回此映射的哈希码值isEmpty()
如果此映射未包含键-值关系,则返回truekeySet()
返回此映射中包含的键的set视图put(K key, V value)
将指定的值与此映射中指定键关联,如果不存在该key,则新建key-value对,否则将原有的key对应的value修改为新的value。putAll(Map<? extends K,? extends V> m)
从指定映射中将所有映射关系复制到此映射中remove(Object key)
如果存在一个键的映射关系,则将其从此映射中移除size()
返回此映射中的键-值映射关系数values()
返回此映射中包含的值的Collection视图entrySet()
获取映射中的entry集合。eg:Set<Map.Entry<String, Book>> entrySet = books.entrySet();