Java中List集合概述、特点、特有方法、案例及List集合子类的特点

简介: List集合概述、特点、特有方法、案例及List集合子类的特点的简单示例

 一、List集合概述和特点

List集合概述:

有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素

List集合特点:

有索引

可以存储重复元素

元素存取有序

二、List集合的特有方法

方法名 描述
void add(int index,E element) 在此集合中的指定位置插入指定的元素
E remove(int index) 删除指定索引处的元素,返回被删除的元素
E set(int index,element) 修改指定索引处的元素,返回被修改的元素
E get(int index) 返回指定索引处的元素

三、List集合的案例

并发修改异常

出现原因:

迭代器遍历的过程中,通过集合对象修改了集合中的元素,造成了迭代器获取元素中判断预期修改值和实际修改值不一致,则会出现:ConcurrentModificationException

解决的方案:

用for循环遍历,然后用集合对象做对应的操作即可

示例代码:

public class ListDemo { 
    public static void main(String[] args) { 
        //创建集合对象 
        List<String> list = new ArrayList<String>(); 
        //添加元素 
        list.add("hello"); 
        list.add("world"); 
        list.add("java"); 
        //遍历集合,得到每一个元素,看有没有"world"这个元素,如果有,我就添加一 
// 个"javaee"元素,请写代码实现 
//         Iterator<String> it = list.iterator(); 
//         while (it.hasNext()) { 
//             String s = it.next(); 
//             if(s.equals("world")) { 
//                 list.add("javaee"); 
//             } 
//         } 
        for(int i=0; i<list.size(); i++) { 
            String s = list.get(i);
            if(s.equals("world")) { 
                list.add("javaee"); 
            } 
        }
        //输出集合对象 
        System.out.println(list); 
    } 
}

image.gif

List集合存储学生对象三种方式遍历

需求:创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合

代码实现:

学生类

public class Student { 
    private String name; 
    private int age; 
    public Student() { 
    }
    public Student(String name, int age) { 
        this.name = name; 
        this.age = age; 
    }
    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; 
    } 
}

image.gif

测试类:

public class ListDemo { 
    public static void main(String[] args) { 
        //创建List集合对象 
        List<Student> list = new ArrayList<Student>(); 
        //创建学生对象 
        Student s1 = new Student("小王", 20); 
        Student s2 = new Student("小刘", 25); 
        Student s3 = new Student("小钟", 23); 
        //把学生添加到集合 
        list.add(s1); 
        list.add(s2); 
        list.add(s3); 
        //迭代器:集合特有的遍历方式 
        Iterator<Student> it = list.iterator(); 
        while (it.hasNext()) { 
            Student s = it.next(); 
            System.out.println(s.getName()+","+s.getAge()); 
        }
        System.out.println("--------"); 
        //普通for:带有索引的遍历方式 
        for(int i=0; i<list.size(); i++) { 
            Student s = list.get(i); 
            System.out.println(s.getName()+","+s.getAge()); 
        }
        System.out.println("--------"); 
        //增强for:最方便的遍历方式 
        for(Student s : list) { 
            System.out.println(s.getName()+","+s.getAge()); 
        } 
    } 
}

image.gif

四、List集合子类的特点

ArrayLsit集合:

底层是数组结构实现,查询快、增删慢

LinkedList集合:

底层是链表结构实现,查询慢,增删快

LinkedList集合的特有功能

特有方法

方法名 说明
public void addFirst(E e) 在该列表开发插入指定的元素
public void addLast(E e) 将指定的元素追加到此列表的末尾
public E getFist() 返回此列表中的第一个元素
public E getLast() 返回此列表中的最后一个元素
public E removeFist() 从此列表中删除并返回第一个元素
public E removeLast() 从此列表中删除并返回最后一个元素
目录
相关文章
|
10天前
|
Java 开发者
Java 中的 toString() 方法详解:为什么它如此重要?
在Java开发中,`toString()`方法至关重要,用于返回对象的字符串表示。默认实现仅输出类名和哈希码,信息有限且不直观。通过重写`toString()`,可展示对象字段值,提升调试效率与代码可读性。借助Lombok的`@Data`注解,能自动生成标准化的`toString()`方法,简化开发流程,尤其适合字段较多的场景。合理运用`toString()`,可显著提高开发效率与代码质量。
36 0
|
10天前
|
存储 Java 开发者
Java 中的 equals 方法:看似简单,实则深藏玄机
本文深入探讨了Java中`equals`方法的设计与实现。默认情况下,`equals`仅比较对象引用是否相同。以`String`类为例,其重写了`equals`方法,通过引用判断、类型检查、长度对比及字符逐一比对,确保内容相等的逻辑。文章还强调了`equals`方法需遵循的五大原则(自反性、对称性等),以及与`hashCode`的关系,避免集合操作中的潜在问题。最后,对比了`instanceof`和`getClass()`在类型判断中的优劣,并总结了正确重写`equals`方法的重要性,帮助开发者提升代码质量。
43 1
|
16天前
|
Java
Java LinkedList集合的深度剖析
总的来说,我希望像说故事一样讲解Java LinkedList集合的使用和实现原理,让有些许枯燥的编程知识变得趣味盎然。在这个“公交车”故事中,你不仅熟悉了LinkedList集合的实现和使用,而且还更深入地理解了数据结构中的链表。链表可能会因为插入和删除的便利性而被选用,虽然它的查找效率并不高,但是在很多场景中仍然十分有效。这就像公交车,虽然它速度不快,但却是城市出行的重要工具。
43 8
|
10天前
|
存储 安全 Java
Java 集合框架详解:系统化分析与高级应用
本文深入解析Java集合框架,涵盖List、Set、Map等核心接口及其常见实现类,如ArrayList、HashSet、HashMap等。通过对比不同集合类型的特性与应用场景,帮助开发者选择最优方案。同时介绍Iterator迭代机制、Collections工具类及Stream API等高级功能,提升代码效率与可维护性。适合初学者与进阶开发者系统学习与实践。
38 0
|
10天前
|
Java
java中一个接口A,以及一个实现它的类B,一个A类型的引用对象作为一个方法的参数,这个参数的类型可以是B的类型吗?
本文探讨了面向对象编程中接口与实现类的关系,以及里氏替换原则(LSP)的应用。通过示例代码展示了如何利用多态性将实现类的对象传递给接口类型的参数,满足LSP的要求。LSP确保子类能无缝替换父类或接口,不改变程序行为。接口定义了行为规范,实现类遵循此规范,从而保证了多态性和代码的可维护性。总结来说,接口与实现类的关系天然符合LSP,体现了多态性的核心思想。
20 0
|
30天前
|
Java
java常见的集合类有哪些
Map接口和Collection接口是所有集合框架的父接口: 1. Collection接口的子接口包括:Set接口和List接口 2. Map接口的实现类主要有:HashMap、TreeMap、Hashtable、ConcurrentHashMap以及 Properties等 3. Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等 4. List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等
|
10月前
|
安全 Java
java线程之List集合并发安全问题及解决方案
java线程之List集合并发安全问题及解决方案
1154 1
|
9月前
|
Java API Apache
怎么在在 Java 中对List进行分区
本文介绍了如何将列表拆分为给定大小的子列表。尽管标准Java集合API未直接支持此功能,但Guava和Apache Commons Collections提供了相关API。
117 1
|
9月前
|
运维 关系型数据库 Java
PolarDB产品使用问题之使用List或Range分区表时,Java代码是否需要进行改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
9月前
|
存储 安全 Java
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
详解Java中集合的List接口实现的ArrayList方法 | Set接口实现的HashSet方法
118 3