List集合是Collection的一个子类,其本身也是一个接口类,拥有Collection接口的所有方法以及自身具有的方法,也是一个有序的集合,现在主要说一下ArrayList和LinkedList。

一、首先说一下List的一些常用方法,JDK文档里的方法很多,这里总结了一些常用的方法

java 找到list中满足条件的元素 java查找list集合中元素_java 找到list中满足条件的元素

常用的方法差不多就是这些,如果有没说到或者说错的,欢迎大佬们更正补充,下面给一个Arraylist例题,来加深对这些方法的印象

二、ArrayList

特点:

    1)ArrayList集合是一个有序的集合,该顺序是元素添加顺序。
               2)ArrayList集合中元素可重复。
               3)底层是数组结构。

import java.util.ArrayList;
import java.util.List;

/**
 * 创建一个List,在List中增加3个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22
 * 3200 (1)在li4之前插入一个工人,信息为“姓名:zhao6,年龄:24,工资:3300”。 (2)删除wang5的信息
 * (3)利用for循环遍历,打印List中所有工人信息。
 *
 */


// 实体类
class Worker {
	private String name;
	private int age;
	private double salary;

	// 无参构造器
	public Worker() {
	}

	// 有参构造器
	public Worker(String name, int age, double salary) {
		this.name = name;
		this.age = age;
		this.salary = salary;
	}

	// get、set方法封装属性
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public double getSalary() {
		return salary;
	}

	public void setSalary(double salary) {
		this.salary = salary;
	}

	@Override
	public String toString() {
		return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + "]";
	}

}
//测试类
public class Test01 {

	public static void main(String[] args) {
		test();

	}

	public static void test() {
		List<Worker> workers = new ArrayList<>();
		workers.add(new Worker("zhang3", 18, 3000));
		workers.add(new Worker("lisi", 22, 3500));
		workers.add(new Worker("wangwu", 22, 3200));
		System.out.println(workers);

		System.out.println("(1)在li4之前插入一个工人,信息为“姓名:zhao6,年龄:24,工资:3300”。");
		workers.add(1,new Worker("zhao6", 24, 3300));
		System.out.println(workers);
		System.out.println("(2)删除wangwu的信息");
		workers.remove(3);
		System.out.println(workers);
		System.out.println("(3)利用for循环遍历,打印List中所有工人信息。");
		for (Worker worker : workers) {
			System.out.println(worker);
		}
	}
}

三、LinkedList

特点:

1)底层是以链表结构来存储数据的

2)添加数据的速度相对于ArrayList较快,但是查询较慢

3)元素是有序的,顺序按添加顺序排列

4)元素可以重复

与ArrayList区别:

1)底层结构不同,ArrayList底层是数组结构,LinkedList底层是链表结构

2)LinkedList查询速度慢,而ArrayList查询速度快

3)LinkedList添加速度快,而ArrayList添加速度慢。

LinkedList特有方法:

java 找到list中满足条件的元素 java查找list集合中元素_java 找到list中满足条件的元素_02

注意:addFirst()、offerFirst()都是把元素添加到集合的开头,功能是一样的,但是底层调用的方法是不一样的

addFirst()底层代码:

public void addFirst(E e) {
        linkFirst(e);
    }

offerFirst()底层代码:

public boolean offerFirst(E e) {
        addFirst(e);
        return true;
    }

返回值是不一样的,可以看到,offerFirst调用的其实就是addFirst()方法。

这里例题就不给了,用法其实和ArrayList差不多,只是部分方法不一样,用的时候多数还是用比较常见的方法