List容器(Java)

文章目录

    • 1.容器介绍
      • 1.1 容器接口结构
      • 1.2 简单解析
    • 2. List容器创建
    • 3. 访问操作(get, iterator, for)
    • 4. 修改操作(add, remove, set)
    • 5. 容量操作(clear, contains, isEmpty, size)
    • 6. 其他操作(toArray, )
    • 7. 泛型操作

1.容器介绍

1.1 容器接口结构

  a. Java存储结构划分
  Java当中按照存储结构可以划分成为两个大类,分别是单列集合 java.util.Collection 和 双列集合 java.util.Map, 顾名思义Collection是实现单列集合的根接口, 而Map则是实现双列集合(键值对)的根接口。

  b. 单列接口Collection
List容器(Java)_第1张图片
  单列接口Collection当中下面可以看到存在许多的子接口例如,List接口,Set接口等等,今天我们着重介绍的就是List接口,即List容器当中的一些通用的操作和常用的实现类举例.

  c. List接口 : 有序 + 重复
List容器(Java)_第2张图片
  List接口当下拥有许多的实现类,其中常用的实现类有ArrayList,LinkedList,Vector等等,不同的实现类其底层实现的接口也会有不同,可能是用数组实现也可能是用链表进行实现的,不同的实现类也可能会拥有一些不同的操作方法。例如对于LinkList因为其底层实现了Deque接口所以其相对List接口以外还会有一些支持双端队头队尾的操作(addFirst, addLast)等.

1.2 简单解析

 A. 包路径:java.util.List
 B. List核心:单列 + 重复 + 有序
 C. 注意:下面使用ArrayList进行方法举例,所使用的方法全部是List接口的通用方法,不是ArrayList实现类的特有方法,是所有实现List接口实现类的所有通用方法,支持所有List接口下实现类的使用
 D. 常用实现类举例:
 ArrayList实现类:数组结构 + 查询快 + 增删慢
List容器(Java)_第3张图片

2. List容器创建

  a. 使用ArrayList实现类

import java.util.ArrayList;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>(); // 指定具体对象Integer的List容器
		
	}
}

3. 访问操作(get, iterator, for)

  a. 索引访问:因为是有序存储的,所以肯定是支持索引访问的,即可以通过索引进行访问指定位置元素
在这里插入图片描述

import java.util.ArrayList;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < 5; i ++ ) list.add(i);
		
		for(int i = 0; i < list.size(); i ++ ) // list.get()
		System.out.println(list.get(i)); // 0 1 2 3 4
	}
}

  b. 迭代器访问:因为继承了迭代器Iterable接口,支持迭代器的访问操作
List容器(Java)_第4张图片

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < 5; i ++ ) list.add(i);
		
		Iterator<Integer> it = list.iterator();
		while(it.hasNext()) {
			System.out.println(it.next()); // 0 1 2 3 4
		}
		
		it = list.listIterator(2); // 从指定位置开始的迭代器
		while(it.hasNext()) {
			System.out.println(it.next()); // 2 3 4
		}
	}
}

  c. 增强for循环:支持直接使用增强的for循环直接遍历容器内所有元素

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 0; i < 5; i ++ ) list.add(i);
		
		for(Integer it : list) // 增强for循环直接遍历所有元素
		System.out.println(it); // 0 1 2 3 4
	}
}

4. 修改操作(add, remove, set)

  a. 元素添加 :
List容器(Java)_第5张图片

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		
		for(int i = 3; i > 0; i -- ) list.add(i);
		for(int i : list) System.out.print(i + " "); // 3 2 1
		System.out.println();
		
		list.add(0, 100); // 向指定位置插入元素
		for(int i : list) System.out.print(i + " "); // 100 3 2 1
		
	}
}

  b. 元素删除:remove方法默认是删除指定位置上的元素,如果想使用第二个方法,一定要记得进行强制类型转换(如果存储的元素正好也是int类型), 才会自动对应上第二个方法
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i);
		list.add(2); // 3 2 1 2
		
		list.remove(3); // 根据索引删除
		for(int it : list) System.out.print(it + " "); // 3 2 1
		System.out.println();
		
		list.remove((Integer)3); // 注意 : 删除首次出现的元素对象(若有多个也只会删除第一个对象)
		for(int it : list) System.out.print(it + " "); // 2 1
		
	}
}

  c. 元素替换 :
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i); // 3 2 1
		
		list.set(0, 30); // 元素30替换0位置上的元素
		for(int it : list) System.out.print(it + " "); // 30 2 1
		
	}
}

5. 容量操作(clear, contains, isEmpty, size)

List容器(Java)_第6张图片

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i); // 3 2 1
		
		System.out.println(list.contains(1)); // true
		System.out.println(list.size()); // 3
		System.out.println(list.isEmpty()); // false
		list.clear();
		System.out.println(list.isEmpty()); // true
	}
}

6. 其他操作(toArray, )

a. toArray(): 将元素按适当顺序返回成为一个数组
在这里插入图片描述

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		for(int i = 3; i > 0; i -- ) list.add(i); // 3 2 1
		
		Object[] arr = list.toArray();
		for(Object i : arr) System.out.print(i + " "); // 3 2 1
	}
}

7. 泛型操作

待后续补充

你可能感兴趣的:(容器,java,list,数据结构)