目录
List集合
常见方法
迭代器(Iterator)
List集合特有方法
List 的特点
创建 List
遍历List
Java集合框架是Java编程语言提供的各种数据结构和算法的实现。它提供了不同类型的集合类,如列表(List)、集(Set)、映射(Map)等,以及一组接口和类来操作和处理集合数据。
Java集合框架的主要类和接口包括:
1. Collection接口:它是所有集合类的根接口,定义了集合对象的基本方法,如添加、删除、查询等。常见的实现类有List和Set。
2. List接口:它是有序的集合,允许重复元素。常见的实现类有ArrayList、LinkedList和Vector。
3. Set接口:它是无序的集合,不允许重复元素。常见的实现类有HashSet、TreeSet和LinkedHashSet。
4. Map接口:它是一种键值对的集合,每个元素包含一个键和一个值。常见的实现类有HashMap、TreeMap和LinkedHashMap。
集合框架提供了许多通用的方法,如add()、remove()和contains()等,以便操作集合中的元素。此外,它还提供了迭代器(Iterator)来遍历集合中的元素。
Java集合框架的好处包括:
- 提供了丰富的数据结构和算法的实现,方便开发者使用和操作集合数据。
- 统一了集合类的接口和方法,使得代码更加简洁、可读性更高。
- 提供了线程安全和高效的实现,能够处理大量数据和高并发情况。
- 可以与其他Java类库和框架很好地集成,提供更强大的功能和性能。
总之,Java集合框架是Java编程中非常重要和常用的一部分,它提供了大量的集合类和接口,方便开发者进行集合操作和处理。通过熟悉集合框架的使用,可以提高程序的开发效率和性能。
List集合
常见方法
List 是一个接口,它是最基础的一种集合:它是一种有序列表。它的常用子类包括:
ArrayList:基于动态数组实现,支持随机访问。
LinkedList:基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双向队列。
Vector:和 ArrayList 类似,但它是线程安全的。
Stack:它实现了一个标准的后进先出的栈,是 Vector 的子类。
CopyOnWriteArrayList:一个线程安全的 ArrayList。
import java.util.ArrayList;
import java.util.List;
public class Arraylist_test01 {
public static void main(String[] args) {
new ArrayList<>();
/**
* new ArrayList<泛型>();
*/
List<String> arrayList = new ArrayList<String>(); //右边的泛型可不写!
arrayList.add("wo"); //向集合存入元素 , 但是要和定义的类型一样!
arrayList.add("ni");
arrayList.add("ta");
//ArrayList 底层是基于数组的
System.out.println(arrayList.size()); //ArrayList.size 方法可以清楚的看到集合中元素的数量! //3
for (int i = 0; i < arrayList.size(); i++) {
System.out.println(arrayList.get(0)); //将下标为0的数组循环三次并打印出来!
}
System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2)); // ArrayList.get方法 可以获取到集合中的元素!
// System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2) + arrayList.get(3)); //一定会报错的!获取的元素不能超过集合中的元素数量!
System.out.println("-----------------------------------");
String remove = arrayList.remove(2);
System.out.println(remove); // ArrayList.remove 删除元素! //ta
// System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2)); // 会报错!因为下标为2的元素已经删除了!
System.out.println(arrayList.size()); // 2 使用size方法,会得到集合中还有两个元素!!
}
}
ArrayList.get : 获取集合中的元素
ArrayList.set : 替换集合中的元素
ArrayList.add : 给集合添加元素
ArrayList.remove : 删除集合中的元素
ArrayList.size : 获取集合中元素的数量
迭代器(Iterator)
在 Java 中,迭代器(Iterator)是一种用于遍历集合(Collection)元素的接口。通过迭代器,可以依次访问集合中的每个元素,而无需了解集合内部的数据结构。使用迭代器可以实现对集合的遍历,并且在遍历的过程中可以进行删除操作,而不会出现并发修改异常。
通常,使用迭代器的基本流程如下:
1. 通过集合的 iterator() 方法获取迭代器对象。
2. 使用 hasNext() 方法判断是否还有下一个元素。
3. 使用 next() 方法获取下一个元素的值。
4. 在需要的时候可以使用 remove() 方法删除元素(可选操作)。
需要注意的是,迭代器是通过集合的 iterator() 方法获取的,不同的集合类(如ArrayList、LinkedList、HashSet等)都实现了iterator()方法,因此可以使用迭代器对不同类型的集合进行遍历操作。
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorExample {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
}
}
List集合特有方法
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
public class ArrayList_list {
public static void main(String[] args) {
//list接口中独有的方法
Collection<String> collection = new ArrayList<>();
collection.add("qq01");
collection.add("qq02");
collection.add("qq03");
//在Collenction接口中,是没有get方法的、
//java多态机制 -- 编译看左边的 而左边是Collection接口,没有get方法,所以运行报错!!
//如果需要使用get方法,可以将Collection强转为List即可!
List list = (List) collection;
// System.out.println(list.get(0)); // 这样就可以使用get方法了!
list.add("qq123");
// System.out.println(list.size()); // 4
list.remove(2);
// System.out.println(list.size()); //3
list.set(1, "weixin");
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
/**
* collection 接口只是提供集合基本的方法
* 具体实现的话使用List ArratList ,需要重写List接口!
*
* 1、List集合下都是有序的接口 根据存放顺序
* 2、可以允许存放重复数据的,而set接口不允许!
*/
}
List 的特点
- 使用
List
时,我们要关注List
接口的规范。List
接口允许我们添加重复的元素,即List
内部的元素可以重复:
1List<String> list = new ArrayList<>();
2list.add("apple"); // size=1
3list.add("pear"); // size=2
4list.add("apple"); // 允许重复添加元素,size=3
5System.out.println(list.size()); // 结果为 3
List
还允许添加null
:
1List<String> list = new ArrayList<>();
2list.add("apple"); // size=1
3list.add(null); // size=2
4list.add("pear"); // size=3
5String second = list.get(1); // null
6System.out.println(second); // 结果为 3
List集合的概念和特点
1、list集合是有序的,可以精确的控制列表中每个元素的插入位置!可以通过证书索引访问元素,并搜索列表中的元素!!
2、set集合是无序的,不允许存入重复的数据!
List集合的特点
有序:存储和取出的元素顺序一致!
可重复:存储的元素可以重复!
创建 List
除了使用 ArrayList
和 LinkedList
,在 JDK9
及其以后的版本中,我们还可以通过 List
接口提供的 of()
方法,根据给定元素快速创建 List
:
1List<Integer> list = List.of(1, 2, 3);
注意:但是
List.of()
方法不接受null
值,如果传入null
,会抛出NullPointerException
异常。
遍历List
1、for循环:和数组类型,我们要遍历一个 List,完全可以用 for 循环根据索引配合 get(int) 方法遍历:
List<String> list = List.of("apple", "pear", "banana");
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
2、迭代器:
Iterator
对象有两个方法:boolean hasNext()
判断是否有下一个元素,E next()
返回下一个元素。因此,使用Iterator
遍历List
代码如下
List<String> list = List.of("apple", "pear", "banana");
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
String s = it.next();
System.out.println(s);
}
3、加强版 for 循环:
Java
的for each
循环就可以帮我们使用Iterator
遍历。把上面的代码再改写如下:
List<String> list = List.of("apple", "pear", "banana");
for (String s : list) {
System.out.println(s);
}
练习:
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;
public class Solution {
public void myMethod() throws Exception{
List<String> list = new ArrayList<>();
list.add("apple");
list.add("pear");
list.add("banana");
System.out.println("使用普通的for循环遍历:");
for (int i=0; i<list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
System.out.println("使用迭代器Iterator遍历:");
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {
String s = it.next();
System.out.println(s);
}
System.out.println("使用增强版for循环:");
for (String s : list) {
System.out.println(s);
}
}
}