集合框架和泛型
一、框架内容
(1)Collection 接口存储一组 不唯一,无序的对象
(2)List 接口存储一组不唯一,有序(插入顺序)的对象
ArrayList:实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率
比较高
LinkedList:采用链表存储方式,插入、删除元素时效率比较高
(3)Set 接口存储一组唯一,无序的对象
(4)Map接口存储一组键值对象,提供key到value的映射
二、ListArrayList
1.boolean add(E e):将指定的元素添加到此列表的尾部
2. int size()返回此列表中的元素数
运行结果为3 4
3.E get(int index) :返回此列表中指定位置上的元素
4、 使用普通for循环遍历集合元素
5、 使用增强for循环遍历集合元素
6.使用迭代器遍历集合元素 Iterator
//迭代器也是一个容器,用来存储元素,将ArrayList集合中的元素取出来后,存入到迭代器容器中,然后通过迭代器调用相应方法获取元素
//通过循环的方式从迭代容器中取出元素,有元素就取出来,所以需要先使用hasNext()方法判断迭代器中有没有元素,如果有,使用next()方法获取里面的元素
4、5、6遍历结果
7. void add(int index, E element):将指定的元素插入此列表中的指定位置。
8. boolean contains(Object o):如果此列表中包含指定的元素,则返回 true。
9.E remove(int index):移除此列表中指定位置上的元素。
10.boolean remove(Object o):移除此列表中首次出现的指定元素(如果存在)
11.boolean isEmpty()如果此列表中没有元素,则返回 true
12.void clear():移除此列表中的所有元素。
13.Object[] toArray() 按适当顺序(从第一个到最后一个元素)返回包含此列表中所有元素的数组。
三、ListLinkedlist
1.将元素添加到集合的第/最后一个位置
addFirst(); addLast();
2.获取集合中第/最后一个元素
linkedList.get(0);
linkedList.get(linkedList.size()-1);
getFirst(); getLast();
3.删除集合中第/最后一个元素
linkedList.remove(0);
linkedList.remove(linkedList.size()-1);
removeFirst(); removeLast();
四、SetHashSet是Set接口常用的实现类
1、HashSet集合中重复的元素不计入元素个数
2、Set集合中的元素是无序的,所以没有下标值类标识元素的位置,也
就没有get()方法来获取元素
五、迭代器Iterator
boolean hasNext(): 判断是否存在另一个可访问的元素
Object next(): 返回要访问的下一个元素
六、Map接口最常用的实现类是HashMap
Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作
1、添加元素用put
2、通过见建来获取值 get(key)
3、移除元素 remove(key)
4、查看集合中是否包含指定的元素
boolean containsValue("日本国");
boolean containsKey("JP");
5、获取Map集合中所有键值对中的键
Set<K> keySet():返回此映射中所包含的键的 Set 视图
6、获取Map集合中所有键值对中的键
Collection<V> values():返回此映射所包含的值的 Collection 视图。
7、遍历输出集合中的元素,以键-值的形式输出
8、遍历Map集合
(1) 使用增强for循环遍历Map集合
(2)使用迭代器遍历Map集合
(3)使用键值对的形式遍历Map集合
六、泛型
典型泛型集合ArrayList<E>、HashMap<K,V>
七、Collections算法类
Collections类定义了一系列用于操作集合的静态方法
Collections和Collection不同,前者是集合的操作类,后者是集合接口
1、(1)sort():排序
(2)Comparable接口 重写compareTo()方法
Student类
Collections类