Java学习—List学习笔记
List概念
List是一个接口,用于继承Collection的接口。List的实现有ArrayList
、LinkedList
和Vector
三种,这三种实现在用法上较为类似。
第一种实现——ArrayList
ArrayList
的底层实现是使用数组,并且这个数组的大小是可以改变的,随着不断有元素添加到ArrayList
中,其规模动态增长。提供增加、删除、修改、遍历等操作。
ArrayList
位于java.util包中,使用前需要引入。
import java.util.ArrayList; // 引入 ArrayList 类
ArrayList<E> objectName =new ArrayList<>(); // 初始化
E:泛型数据类型,用于设置objectname的数据类型,只能为引用数据类型。
1.添加元素
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites);
}
}
输出结果为:
[Google, Runoob, Taobao, Weibo]
2.访问元素
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.get(1)); // 访问第二个元素
}
}
结果为:
Runoob
3.修改元素
mport java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
sites.set(2, "Wiki"); // 第一个参数为索引位置,第二个为要修改的值
System.out.println(sites);
}
}
输出结果为:
[Google, Runoob, Wiki, Weibo]
4.删除元素
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
sites.remove(3); // 删除第四个元素
System.out.println(sites);
}
}
结果如下:
[Google, Runoob, Taobao]
5.计算大小
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
System.out.println(sites.size());
}
}
输出结果为:
4
6.遍历数组列表
一种方法是用for来迭代。
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
for (int i = 0; i < sites.size(); i++) {
System.out.println(sites.get(i));
}
}
}
一种是使用for-each来迭代元素。
import java.util.ArrayList;
public class RunoobTest {
public static void main(String[] args) {
ArrayList<String> sites = new ArrayList<String>();
sites.add("Google");
sites.add("Runoob");
sites.add("Taobao");
sites.add("Weibo");
for (String i : sites) {
System.out.println(i);
}
}
}
7.排序
使用Collection的sort( )可以对字符或数字进行排序。
mport java.util.ArrayList;
import java.util.Collections; // 引入 Collections 类
public class RunoobTest {
public static void main(String[] args) {
ArrayList<Integer> myNumbers = new ArrayList<Integer>();
myNumbers.add(33);
myNumbers.add(15);
myNumbers.add(20);
myNumbers.add(34);
myNumbers.add(8);
myNumbers.add(12);
Collections.sort(myNumbers); // 数字排序
for (int i : myNumbers) {
System.out.println(i);
}
}
}
输出结果如下:
8
12
15
20
33
34
其他方法列表
方法 | 描述 |
---|---|
add() | 将元素插入到指定位置的 arraylist 中 |
addAll() | 添加集合中的所有元素到 arraylist 中 |
clear() | 删除 arraylist 中的所有元素 |
contains() | 判断元素是否在 arraylist |
indexOf() | 返回 arraylist 中元素的索引值 |
removeAll() | 删除存在于指定集合中的 arraylist 里的所有元素 |
isEmpty() | 判断 arraylist 是否为空 |
toArray() | 将 arraylist 转换为数组 |
toString() | 将 arraylist 转换为字符串 |
拓展补充–集合嵌套
在LeetCode中做题也碰到了相关知识,这里只做简单的介绍,之后在进行系统的整理。
public class Array {
public static void main(String[] args) {
// TODO 自动生成的方法存根
ArrayList<String> classOne = new ArrayList<>();
classOne.add("zhen");
classOne.add("wu");
ArrayList<String> classTwo = new ArrayList<>();
classTwo.add("zhou");
classTwo.add("wang");
classTwo.add("qian");
ArrayList<ArrayList<String>> classAll = new ArrayList<>();
classAll.add(classOne);
classAll.add(classTwo);
for(ArrayList<String> list: classAll) {
System.out.println(list);
}
}
}
输出结果为:
[zhen, wu]
[zhou, wang, qian]