1.集合框架
java语言的设计中对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类)。所有抽象出来的数据结构和操作(算法)统称为java集合框架。java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了,这样就大大提高了编程效率
三类集合接口:list、set、map
两类集合接口:collection、map
集合接口的区别:
collection 接口存储一组不唯一,无序的对象
list 接口存储一组不唯一,有序(插入顺序)的对象
set 接口存储一组唯一,无序的对象
map 接口存储一组键值对象,提供key(键)到value(值)的映射
2.List接口的实现类
ArrayList:ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高,适合用来查看。
| 0 | 1 | 2 | 3 | 4 | 5 |
| aaaa | bbbb | cccc | aaaa | eeee | dddd |
LinkedList:采用链表存储方式。插入、删除元素时效率比较高。
语法格式:左边接口 右边实现类(多态)
例如:List<Object> list=new ArrayList<>();
3.ArraryList集合类
List接口常用方法
| 方法名 | 说明 |
| boolean add(Object o) | 在列表的末尾顺序添加元素,起始索引位置从0开始 |
| void add(int index,Object o) | 在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数直之间 |
| int size() | 返回列表中的元素个数 |
| Object get(int index) | 返回指定索引位置处的元素。取出的元素时Object类型,使用前需要进行强制类型转换 |
| boolean contains(Object o) | 判断列表中是否存在指定元素 |
| boolean remove(Object o) | 从列表中删除元素 |
| Object remove(int index) | 从列表中删除指定位置元素,起始索引位置从0开始 |
在删除char字符时,需要将char字符强制转换为character型
list.remove((Character)'a');
public class Ch01 {
public static void main(String[] args) {
//左边:接口 右边:实现类 多态
List<Object> list=new ArrayList<>();
//接口定义的方法
//在List中追加一条数据
list.add(1);
list.add('a');
list.add(true);
//访问某个数据
System.out.println(list.get(2));
//在指定下标位置插入元素,下标位置必须介于0到个数之间
list.add(1, "abc");
//ArraryList中重写了toString方法
System.out.println(list.toString());
//size方法:获取元素个数
System.out.println(list.size());
//remove方法:删除某个元素
//可以通过传入具体的元素值类删除元素,返回结果为boolean型
System.out.println("删除的结果为"+list.remove((Character)'a'));
System.out.println(list.toString());
//也可以通过下标来删除元素 返回Object类型
System.out.println("被删除的元素是:"+list.remove(2));
System.out.println(list.toString());
//contains方法:判断是否存在指定元素值,返回型为Boolean
System.out.println(list.contains("abc"));
}
}
4.LinkedList集合类
常用方法:
| 方法名 | 说明 |
| void addFirst(Object o) | 在列表的首部添加元素 |
| void addLast(Object o) | 在列表的末尾添加元素 |
| Object getFirst() | 返回列表中的第一个元素 |
| Object getLast() | 返回列表中的最后一个元素 |
| Object romoveFirst() | 删除并返回列表中的第一个元素 |
| Object removeLast() | 删除并返回列表中的最后一个元素 |
5.list集合常用方法
addAll( ) 在集合中添加一个集合
isEmpty( ) 判断集合是否为空,如果为空返回true,不为
空返回false
clear 清空数据,保留对象,重置list
indexOf( ) 返回元素第一次出现位置的下标
lastIndexOf( ) 返回元素最后一次出现位置的下标
removeAll( ) 从集合中删除另一个集合所包含的元素
toArray( ) 可以把集合转换成数组
Arrays.asList( ) 数组转换成集合
public class Ch03 {
public static void main(String[] args) {
// addAll 在集合中添加一个集合
List<Object> list = new ArrayList<>();
Set<Object> set = new HashSet<>();
set.add(8);
list.add(1);
list.add(2);
list.add(3);
List<Object> list2 = new LinkedList<>();
list2.add(0);
list2.addAll(list);
list2.addAll(set);
System.out.println(list2);
System.out.println(list2.size());
// isEmpty() 判断集合是否为空,如果为空返回true,不为空返回false
// 判断一个集合是否为空
// if(list!=null && !list.isEmpty())
// clear清空数据,保留对象,重置list
// list2.clear();
// list2=null;
// System.out.println(list2);
// System.out.println(list2.size());
// indexOf()返回元素第一次出现位置的下标
System.out.println(list2.indexOf(1));
// lastIndexOf()返回元素最后一次出现位置的下标
System.out.println(list2.lastIndexOf(1));
// removeAll 从集合中删除另一个集合所包含的元素
list2.removeAll(list);
System.out.println(list2);
System.out.println(list2.size());
// toArray 可以把集合转换成数组
Object[] arr = list2.toArray();
System.out.println(Arrays.toString(arr));
// Arrays.asList 数组转换成集合
System.out.println(Arrays.asList(arr));
}
}
6.如何遍历List集合
方法1:通过for循环和get()方法配合实现遍历
方法2:通过迭代器Iterator实现遍历
所有集合接口和类都没有提供相应的遍历方法,而是由Iterator实现集合遍历
collection接口的iterate()方法返回一个Iterator,然后通过Iterator接口的两个方法可实现遍历
boolean hasNext():判断是否存在另一个可访问的元素
Object next():返回要访问的下一个元素