集合
为了程序操作存储不固定的数据,可以用到JDK工具中的集合类,位于Java.util包中
分为双列集合Map,单列集合Collection
集合总体图鉴
Collection 接口
Collection 类是一个接口,定义了集合中最基本的常用方法。
接口中的主要方法:
1. boolean add(E e); 增加元素
2. boolean remove(Object obj); 删除元素
3. boolean contains(Object obj); 包含
4. boolean is Empty(); 是否有元素,空为true,非空是false
5. void clear(); 清空集合中的元素
数组清空 != null;元素虽然清空。但是数组空间还在
6. int size(); 集合中元素的个数
7. Object[] toArray(); 把集合转换成数组
8. Iterator<E> iterator(); 获取迭代器对象
增强for循环:
使用增强for循环,进行遍历集合
语法:for(数据类型 变量名:要遍历的集合名字){
}
Iterator<E>接口
方法:
E next(); 获取元素
boolean hasNext(); 判断是否是下一个元素;有元素---true;无元素---false。
注意事项:
a. 通过迭代器遍历集合的时候,不能通过“集合对象”进行增删操作
b. 迭代器有一个删除方法,可以通过迭代器的删除方法进行删除---void remove(); 获取谁,删除谁
单列集合:
常用实现类 LinkedList 的成员方法
1. void addFirst(E e); -- 把元素添加到头部
2. void addLast(E e); -- 把元素添加到尾部
3. E getFirst(); -- 获取头部位置的元素
4. E getLast(); -- 获取尾部位置的元素
5. E removeFirst(); -- 删除头部位置元素
6. E removeLast(); -- 删除尾部位置元素
List接口下和索引值方法
1. E get(int index); -- 获取元素
2. E remove(int index); -- 根据索引值删除元素
3. void add(int index,E e); -- 把元素添加到对应索引值位置
4. E set(int index,E e); -- 替换对应索引值位置的元素,返回被替换的元素
5. int indexOf(Object obj); -- 获取参数在集合中的索引值位置,如果元素不存在,则返回 -1
6. int lastIndexOf(Object obj); -- 获取参数在集合中最后一次出现的索引值位置,如果元素不存在,则返回 -1
7. List<E>sublist(int beginIndex,int endIndex); -- 截取
set接口
set接口没有在 Collection 的基础上扩展功能,Collection的方法就是set方法
实现类
HashSet 去除重复
LinkedHashSet 不能重复,保证顺序
TreeSet<E> 可排序
①TreeSet的泛型必须是Comparable 类型,如果不是该类型,则新增会抛出 classCastException
②如果泛型不是Comparable类型,则需要在TreeSet的构造器中传入一个Comparator类型的对象
TreeSet 新增元素的时候,泛型必须是Comparable类型
构造方法:
public TreeSet();
public TreeSet(comparator<E>C);
Comparable<T>接口
public int compareTo(E,e);
Comparator<E>接口
int compare(T t1,T t2);
以及升序降序使用规则:
升序 --- 当前对象—参数对象
降序 --- 参数对象—当前对象
双列集合:
常用方法:
如果k存在,新v替换旧v,返回被替换的旧v
如果k不存在,则返回null
1. V put(K k,V v); -- 新增方法
2. V remove(Object key); -- 根据key删除整个键值对,返回对应的value,如果k不存在,则返回null
3. V get(Object key); -- 根据key获取v,如果key不存在,则返回null;
4. boolean isEmpty(); -- 判断集合是否为空,为空返回true,不为空返回false
5. void clear(); -- 清空集合中的元素
6. boolean containsKey(Object key); -- 判断是否包含key
7 . boolean containsValue(Object value); -- 判断是否包含value
8 . set<K>keySet(); -- 获取所有的key
9 . set<Entry<K,V>> entrySet(); -- 获取所有的entry
10. Collections<V>values(); -- 获取所有的value
11. int size(); -- 元素个数
遍历集合Map方法:
方法1:
a. 获取所有的key,keySet();返回值Set<K>
b. 遍历Set集合,泛型是k
c. 获取一个k,根据k获取v
方法2:
a. 获取所有的Entry,Set<Entry<k,v>>
b. 遍历Set集合,泛型是Entry
c. entry.getKey()、entry.getValue();
数组图:
双向链表:
树的各种形态:
数据结构图:
队列图: