Java笔记12-16

List接口介绍

特点:

有序:有序(元素存入集合的顺序和取出的顺序一致)。List中每个元素都有索引标记。可以根据元素的索引标记(在List中的位置)访问元素,从而精确控制这些元素。
可重复:List允许加入重复的元素。跟确切地讲,List通常允许满足e1.equals(e2)的元素重复加入容器。

List的常用方法

除了Collection接口中的方法,List多了一些根顺序(索引)有关的方法

方法说明
void add(int index, Object element)在指定位置插入元素,以前元素全部后移一位
Object set(int index, Object element)修改指定位置的元素
Object get(int index)返回指定位置的元素
Object remove(int index)删除指定位置的元素,后面的元素全部前移一位
int indexOf(Object o)返回第一个匹配元素的索引,如果没有该元素,返回-1
int lastIndexOf(Object)返回最后一个匹配元素的索引,如果没有该元素,返回-1

ArrayList容器类

ArrayList是List接口的实现类。是List存储特征的具体实现。
ArrayList底层是用数组实现的存储。特点:查询效率高,增删效率低,在多线程的情况下线程不安全。

添加元素

例:

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

public class ArrayListTest {
    public static void main(String[] args) {
        // 实例化ArrayList容器
        List<String> list = new ArrayList<>();

        // 添加元素
        boolean flag = list.add("wuhu qifei");
        System.out.println(flag);

        // 索引位置不能大于容器内元素个数
        // 可以游戏祖玛来理解
        list.add(1,"cyc");
    }
}
获取元素
E get(int index)

返回此列表中指定位置的元素
参数:index,返回的元素的索引
异常:IndexOutofBoundsException,如果索引超出范围会抛出异常(index < 0 或index >= size())
示例代码(部分):

   // 通过指定索引位置获取元素
   System.out.println(list.get(0));
   System.out.println(list.get(1));
   System.out.println(list.get(2));
   
   // 通过循环获取容器中所有元素
   // size(),返回容器中个数
   for (int i = 0; i < list.size(); i++) {
       System.out.println(list.get(i));
   }
替换元素
E set(int index, E element)

取代在指定位置上的元素在这个列表指定的元素

参数:
index,要取代元素的索引
element,要替换进去的元素
结果:
修改指定位置的元素并将修改前的元素返回。
示例代码(部分):

String val = list.set(0,"world");
System.out.println(val);
for(int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}
删除元素
根据索引删除元素
E remove(int index)

删除指定位置的元素
参数:
index,要删除元素的索引
返回值,返回被删除的元素
示例代码(部分):

String string1 = list.remove(1);
System.out.println(string1);
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}
删除指定元素

删除给定的对象

boolean remove(Object o)

参数:
Object o,指定的对象
返回值,返回bool类型,true删除成功,false删除失败
示例代码(部分):

boolean flagA = list.remove("world");
System.out.println(flagA);
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}
清空容器

删除容器中所有元素

void clear()

示例代码(部分):

list.clear();
System.out.println(list.size());
判断容器是否为空
boolean isEmpty()

如果容器为空,返回true,如果容器不为空,返回false
示例代码(部分):

boolean flagB = list.isEmpty();
System.out.println(flagB);
list.add("1234");
flagB = list.isEmpty();
System.out.println(flagB);
判断容器中是否包含指定元素
boolean contain(Object o)

判断Object o是否在容器内,如果是则返回true,如果不是则返回false
示例代码(部分):

boolean flagC = list.contains("1234");
System.out.println(flagC);
flagC = list.contains("1");
查找元素的位置
查找元素第一次出现的位置
int indexOf(Object o)

查找Object o对象,若查到则返回该元素第一次出现的位置索引号,若查找不到该元素则返回-1。
示例代码(部分):

int index1 = list.indexOf("1234");
System.out.println(index1);
查找元素最后一次出现的位置
int lastIndexOf(Object o)

查找Object o对象,若查到则返回该元素最后一次出现的位置索引号,若查找不到该元素则返回-1。
示例代码(部分):

list.add("gugugu");
list.add("1234");
int lastIndex = list.lastIndexOf("1234");
System.out.println(lastIndex);
将单例集合转换成数组
转换为Object数组
Object[] toArray()

无参数,返回一个Object数组
示例代码(部分):

// 将ArrayList转换为Object类型数组
// 但是不能将转换的数组整体进行强制类型转换
Object[] arry = list.toArray();
for (int i = 0; i < arry.length; i++) {
    String str = (String)arry[i];
    System.out.println(str);
}
转换泛型类型数组
<T> T[] toArray(T[] a)

示例代码(部分):

// 将单例集合转换为指定类型的数组
String[] arry2 = list.toArray(new String[list.size()]);
for (int i = 0; i < arry2.length; i++) {
    System.out.println(arry2[i]);
}
容器的并集操作

示例代码(部分):

List<String> list_1 = new ArrayList<>();
list_1.add("a");
list_1.add("b");
list_1.add("c");

List<String> list_2 = new ArrayList<>();
list_2.add("b");
list_2.add("c");
list_2.add("d");

boolean flagL = list_1.addAll(list_2);
System.out.println(flagL);
for (String str_test:list_1) {
    System.out.println(str_test);
}

将容器合并,如果合并成功返回true,失败返回false。如果并入的容器(例如list_2)为空则不能合并,返回false,如果主容器(例如list_1)为空,仍能合并,且返回true。

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值