集合框架和泛型
Collection集合接口:无序,不唯一
1.List接口:存储一组不唯一,有序(插入顺序)的对象
1.1 Arraylist:
数组作为底层存储,实现了长度可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高
ArrayList news = new ArrayList();
news.add(Object e) 在列表的末尾顺序添加元素,起始索引位置从0开始
news.add(int index,Object element) 指定下标增加元素
news.size 返回列表中的元素个数
news.get(int index) 返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换
news.contains(Object o) 判断列表中是否存在指定元素e
news.remove(int index) 从列表中删除指定位置元素,起始索引位置从0开始
news.remove(Object o) 从列表中删除元素
news.set(int index,Object o ) 指定下标进行修改其中的元素,返回的是修改前的对象
1.2 LinkedList:
以链表作为底层存储,采用链表存储方式,插入、删除元素时效率比较高
链表:多个node互相存储地址,以下一个node地址存储
LinkedList list = new LinkedList();
list.addFist(Object o) 在列表的首部添加元素
list.addLast(Object o) 在列表的末尾添加元素
list.getFirst() 返回列表中的第一个元素
list.getLast() 返回列表中的最后一个元素
list.removeFirst() 删除列表中的第一个元素
list.removeLast() 删除列表中的最后一个元素
1.3 Vector
线程安全的ArrayList,每个方法都增加了synchronized
2.Set接口:存储一组唯一,无序的对象
HashSet是Set接口常用的实现类
Set接口没有get()方法,无法按下标遍历
3.遍历方法:
3.1 for循环遍历ArrayList
for (int i = 0; i < news.size(); i++) {
System.out.println(news.get(i));//获取对应下标
}
3.2 增强for遍历ArrayList
for(Object n:news){
System.out.println(n);
}
3.3 迭代器for
Iterator iter=news.iterator();
while (iter.hasNext()){
System.out.println(iter.next());//方法一次循环只能用一个
}
Map接口:
Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作
1 HashMap接口:
8个以内是数组加链表,超过8个是红黑树存储
1.1 常用方法
HashMap map = new HashMap();
map.put(key,value) 以“键-值”对的方式进行存储
map.get(key) 根据键返回相关联的值,如果不存在指定的键,返回null
map.remove(key) 删除由指定的键映射的“键-值对”
map.size() 返回集合的个数
map.keySet() 返回键的集合–>Set类型,需要新建Set接收,然后遍历
map.values() 返回值的集合–>Collection类型,需要新建Collection接收,然后遍历
map.entrySet() 返回键值的集合–>Set类型,需要新建Set接收,然后遍历
map.containsKey(key) 如果存在由指定的键映射的“键-值对”,返回true
1.2 遍历
1.2.1遍历键值
Set entry = map.entrySet();
for(Object o:entry){
System.out.println(o);
}
1.2.2遍历获取键
Set key = map.keySet();
for(Object o:key){
System.out.println(o);
}
1.2.3遍历获取值
Colection values = map.values();
for(Object o:values){
System.out.println(o);
}
1.2.4 迭代器for遍历键值
Interator iter = map.interator();
while(iter.hasNext(){
System.out.println(iter.next());
}
2 泛型
2.1 概念:
将对象的类型作为参数,指定到其他类或者方法上,从而保证类型转换的安全性和稳定性。本质是参数化类型
2.2 泛型集合:
泛型集合可以约束集合内的元素类型
典型泛型集合ArrayList、HashMap<K,V>
、<K,V>表示该泛型集合中的元素类型,不可以是基本元素类型
泛型集合中的数据不再转换为Object
例子:ArrayList list = new ArrayList();
HashMap<String,Students> stumap = new HashMap();
3 Collections算法类
3.1 概念:
Java集合框架将针对不同数据结构算法的实现都保存在工具类中,Collections类定义了一系列用于操作集合的静态方法
3.2 Collection与Collections的区别:
Collection是集合接口,Collections是集合的操作类
3.3 常用方法
Collections.sort(list) 排序 //类实现comparable接口,重写compareTo方法
Collections.max(list) 最大值
Collections.min(list) 最小值
本文详细介绍了Java集合框架中的List接口,包括ArrayList和LinkedList的特点与操作,以及Set接口中的HashSet。此外,还讲解了Map接口的HashMap及其常用方法。此外,还涉及了泛型的概念和使用,以及Collections类的一些常用算法方法。

被折叠的 条评论
为什么被折叠?



