【零基础学Java】—List集合(三十九)

简介: 【零基础学Java】—List集合(三十九)

java.util.list接口 extends Collection接口

list接口的特点:

1、有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出321)

2、有索引,包含了一些带索引的方法

3、允许重复的元素

list接口中带索引的方法有:

  • public void add(int index,E element):指定的元素,添加到该集合的指定位置上
  • public E get(int index):返回集合指定位置的元素
  • public E remove(int index):移除列表中指定的元素,返回的是被移除的元素
  • public E set(int index,E element):用指定的元素替换集合中指定位置的元素,返回值是更新前的元素

注意:操作索引的时候,一定要防止索引越界异常

IndexOutOfBoundsException :索引越界异常 集合会报

ArrayIndexOutOfBoundsException:数组越界异常

StringIndexOutOfBoundsException:字符串索引越界异常

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
 * @author :CaiCai
 * @date : 2022/4/13 11:02
 */
/*
java.util.list接口 extends Collection接口
list接口的特点:
1、有序的集合,存储元素和取出元素的顺序是一致的(存储123 取出321)
2、有索引,包含了一些带索引的方法
3、允许重复的元素
list接口中带索引的方法有:
public void add(int index,E element):指定的元素,添加到该集合的指定位置上
public E get(int index):返回集合指定位置的元素
public E remove(int index):移除列表中指定的元素,返回的是被移除的元素
public E set(int index,E element):用指定的元素替换集合中指定位置的元素,返回值是更新前的元素
注意:操作索引的时候,一定要防止索引越界异常
IndexOutOfBoundsException :索引越界异常 集合会报
ArrayIndexOutOfBoundsExceptionL:数组越界异常
StringIndexOutOfBoundsException:字符串索引越界异常
 */
public class demo01 {
    public static void main(String[] args) {
        //创建一个list集合对象 多态
        List<String> list=new ArrayList<>();
        //使用add向集合中添加元素
         list.add("a");
         list.add("b");
         list.add("c");
         list.add("a");
        System.out.println(list);//[a, b, c, a]
        //public void add(int index,E element):指定的元素,添加到该集合的指定位置上
        list.add(3,"lily");
        System.out.println(list);
        //public E remove(int index):移除列表中指定的元素,返回的是被移除的元素
        String removeE=list.remove(2);
        System.out.println("被移除的元素:"+removeE);//c
        System.out.println(list);//[a, b, lily, a]
        //public E set(int index,E element):用指定的元素替换集合中指定位置的元素,返回值是更新前的元素
        //把最后一个a替换成为大写的A
         String setRemove= list.set(3,"A");
         System.out.println("被替换的元素是:"+setRemove);
         System.out.println(list);//[a, b, lily, A]
    //list集合遍历的三种方式
        for (int i = 0; i <list.size() ; i++) {
            //public E get(int index);返回集合中指定位置的元素
            String s =list.get(i);
            System.out.println(s);
        }
        System.out.println("===============");
        //使用迭代器
        Iterator<String> it=list.iterator();
        while(it.hasNext()){
            String s=it.next();
            System.out.println(s);
        }
        System.out.println("============");
        //使用增强for
        for (String s : list) {
            System.out.println(s);
        }
    }
}


相关文章
|
3天前
|
存储 Java 容器
Java一分钟之-高级集合框架:LinkedList与TreeSet
【5月更文挑战第17天】这篇博客对比了Java集合框架中的LinkedList和TreeSet。LinkedList是双向链表,适合中间插入删除,但遍历效率低且占用空间大;TreeSet基于红黑树,保证元素有序且不重复,插入删除速度较LinkedList慢但查找快。选择时需根据操作需求和性能考虑。
12 2
|
4天前
|
存储 安全 算法
【常见集合】Java 常见集合重点解析
【常见集合】Java 常见集合重点解析
13 0
|
1天前
|
安全 Java 容器
Java一分钟之-并发编程:线程安全的集合类
【5月更文挑战第19天】Java提供线程安全集合类以解决并发环境中的数据一致性问题。例如,Vector是线程安全但效率低;可以使用Collections.synchronizedXxx将ArrayList或HashMap同步;ConcurrentHashMap是高效线程安全的映射;CopyOnWriteArrayList和CopyOnWriteArraySet适合读多写少场景;LinkedBlockingQueue是生产者-消费者模型中的线程安全队列。注意,过度同步可能影响性能,应尽量减少共享状态并利用并发工具类。
13 2
|
1天前
|
Python
两个list集合合并成一个python教程 - 蓝易云
在这两种方法中,加号会创建一个新的列表,而extend方法则会在原地修改列表。
5 0
|
2天前
|
安全 Java 容器
Java一分钟之-高级集合框架:并发集合(Collections.synchronizedXXX)
【5月更文挑战第18天】Java集合框架的`Collections.synchronizedXXX`方法可将普通集合转为线程安全,但使用时需注意常见问题和易错点。错误的同步范围(仅同步单个操作而非迭代)可能导致并发修改异常;错误地同步整个集合类可能引起死锁;并发遍历和修改集合需使用`Iterator`避免`ConcurrentModificationException`。示例代码展示了正确使用同步集合的方法。在复杂并发场景下,推荐使用`java.util.concurrent`包中的并发集合以提高性能。
13 3
|
2天前
|
Java 开发者
Java一分钟之-高级集合框架:优先队列(PriorityQueue)
【5月更文挑战第18天】`PriorityQueue`是Java集合框架中的无界优先队列,基于堆数据结构实现,保证队头元素总是最小。常见操作包括`add(E e)`、`offer(E e)`、`poll()`和`peek()`。元素排序遵循自然排序或自定义`Comparator`。常见问题包括错误的排序逻辑、可变对象排序属性修改和混淆`poll()`与`peek()`。示例展示了自然排序和使用`Comparator`的排序方式。正确理解和使用`PriorityQueue`能提升应用性能。
29 6
|
2天前
|
存储 Java
Java一分钟之-高级集合框架:Queue与Deque接口
【5月更文挑战第18天】本文探讨Java集合框架中的`Queue`和`Deque`接口,两者都是元素序列的数据结构。`Queue`遵循FIFO原则,主要操作有`add/remove/element/peek`,空队列操作会抛出`NoSuchElementException`。`Deque`扩展`Queue`,支持首尾插入删除,同样需注意空`Deque`操作。理解并正确使用这两个接口,结合具体需求选择合适数据结构,能提升代码效率和可维护性。
24 4
|
3天前
|
存储 算法 Java
Java 集合框架
5月更文挑战第10天
|
5天前
|
存储 安全 Java
Java一分钟之-集合框架进阶:Set接口与HashSet
【5月更文挑战第10天】本文介绍了Java集合框架中的`Set`接口和`HashSet`类。`Set`接口继承自`Collection`,特征是不允许重复元素,顺序不确定。`HashSet`是`Set`的实现,基于哈希表,提供快速添加、删除和查找操作,但无序且非线程安全。文章讨论了`HashSet`的特性、常见问题(如元素比较规则、非唯一性和线程安全性)以及如何避免这些问题,并提供了代码示例展示基本操作和自定义对象的使用。理解这些概念和注意事项能提升代码效率和可维护性。
13 0
|
5天前
|
存储 安全 算法
Java一分钟之-Java集合框架入门:List接口与ArrayList
【5月更文挑战第10天】本文介绍了Java集合框架中的`List`接口和`ArrayList`实现类。`List`是有序集合,支持元素重复并能按索引访问。核心方法包括添加、删除、获取和设置元素。`ArrayList`基于动态数组,提供高效随机访问和自动扩容,但非线程安全。文章讨论了三个常见问题:索引越界、遍历时修改集合和并发修改,并给出避免策略。通过示例代码展示了基本操作和安全遍历删除。理解并正确使用`List`和`ArrayList`能提升程序效率和稳定性。
11 0