集合
框架顶层Collection接口:
常见方法:
boolean add(Object obj); boolean addAll(Collection col);
boolean remove(Object obj); boolean removeAll(Collection col); void clear();
boolean contains(Object obj); boolean containsAll(Collecton col); boolean isEmpty();
int size();
Iterator iterator();//去除元素的方式迭代器,该对象必须依赖具体容器,因为每一个容器的数据结构不同,所以迭代器对象是容器内部实现的。对于使用容器者而言,具体的实现不重要,只要通过容器获取到该实现的迭代器的对象即可,也就是iterator方法。
Iterator接口就是对所有的Collection容器进行元素取出的公共接口。
Collection:1.List:有序(存入和取出的顺序一致),元素都有索引(角标),元素可以重复。2.Set:元素不能重复,无序。
List特有的常见方法:
void add(index, element); void add(index, collection); Object remove(index); Object set(index, element);
Object get(index); int indexOf(object); int lastIndexOf(object);
List中常用的子类:
1.Vector:内部是数组数据结构
2.ArrayList:内部是数组数据结构,是不同步,替代Vector。查询的速度快。
3.LinkedList:内部是链表数据结构,是不同步的。增删元素的速度非常快。
LinkedList相关方法:addFirst(String str); getFirst(); removeFirst();
Set集合:(保证数据不重复)
元素不可以重复,无需。Set接口中的方法和Collection中的方法是一致的。
HashSet:无序,不重复,依赖于hashCode和equase()方法
TreeSet:可以对Set集合中的元素进行排序。是二叉树结构,是不同步的。判断元素惟一性的方式:就是根据比较方法的返回值结果是否是0,是0,就是相同元素,不存在。
TreeSet对元素进行排序的方法之一:让元素自身具备比较功能,元素需要实现Comparable接口,覆盖compareTo方法。(自然顺序排序)
TreeSet的第二种比较方式(元素不具备自然排序的功能):让集合具备比较性,在创建集合的时候为集合传递一个参数Comparator的实现类对象。
使用规则:
看到array:就要想到数组,就要想到查询快,有脚标。
看到link:就要想到链表,就要想到增删快,
看到hash:就要想到哈希表,就要想到唯一性,就要想到元素需要覆盖hashcode和equals方法
看到tree:就要想到二叉树,就要想到排序,就要想到两个接口Comparable和Comparator.
而且通常这些常用的集合容器都是不同步的。
Map
一次添加一对元素。Collection一次添加一个元素。Map也称为双列集合,Collection集合称为单列集合,其实Map集合中存储的就是键值对,map集合必须保证键的唯一性。
void clear():清空map集合
value put(key, value):返回前一个和key关联的值,如果没有返回null
value remove(key):根据指定的key返回指定的键值对。
boolean containsKey(key):是否包含指定的键
boolean containsValue(value):是否包含指定的值
boolean isEmpty():是否为空
value get(key):通过键获取值,如果没有键返回null 。(可以通过返回值是否为null,判断是否包含指定键)