List的使用(Java)

简介: 顺序表是Java实际开发中用到的最多的数据结构之一。

顺序表(List)系列

ArrayList

简介

请添加图片描述

声明方式

从这里开始就是Java的STL与C++STL最大的区别了 声明方式有很大的不同

import java.util.*;

public class Main{    
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<Integer>(); // 正确语法
        List<Integer> list3 = new LinkedList<Integer>(); // 正确语法
    
        List<Integer> list2 = new List<Integer>();  // 错误语法 
    }
}

List不能通过自己来实现 需要通过他的子类来实现

常用方法

add(第一种)

List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);        
        System.out.println(list);
        /*[1, 2, 3]*/

add(第二种)

List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(3, 1);
        System.out.println(list);
        /*
         * [1, 2, 3, 1]
         */        

remove remove(int position) 按照索引删除值

List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.remove(1);
        System.out.println(list);
        /*
         * [1, 3]
         */        

remove remove(String item) 删除第一个出现的这个匹配的字符串

List<String> list = new ArrayList<String>();
        list.add("123");
        list.add("1234");
        list.add("12345");
        list.add("123456");
        System.out.println(list);
        /*
         * [123, 1234, 12345, 123456]
         */        
        list.remove("12345");
        System.out.println(list);
        /*
         * [123, 1234, 123456]
         */

removeAll void removeAll

List<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(2);
        list.add(3);        
        System.out.println(list);
        /*[1, 2, 3]*/
        list.removeAll(list);
        System.out.println(list);
        /*         
           []
         */

get get(int index)

List<String> list = new ArrayList<String>();
        list.add("123");
        list.add("1234");
        list.add("12345");
        list.add("123456");
        System.out.println(list.get(3));/*123456*/    

set set(int index E element)

List<String> list = new ArrayList<String>();
        list.add("123");
        list.add("1234");
        list.add("12345");
        list.set(2, "497");
        System.out.println(list);
        /*
         * [123, 1234, 497]
         */

遍历方式

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(3);
        list.add(2);
        list.add(4);
        list.add(5);
        list.add(0);
        
        // 方法一
        for(int i = 0; i < list.size(); ++ i)
        {
            System.out.print(list.get(i) + " ");
        }
        /*1 3 2 4 5 0 */
        
        System.out.println();
        
        // 方法二
        Iterator it = list.iterator();
        while(it.hasNext())
        {
            System.out.print(it.next() + " ");
        }
        /*1 3 2 4 5 0 */
        
        System.out.println();        
        // 方法三
        for(Integer i : list)
        {
            System.out.print(i + " ");
        }
        /*1 3 2 4 5 0 */
    }

排序

使用Comparator自定义排序

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(3);
        list.add(2);
        list.add(4);
        list.add(5);
        list.add(0);
        // 顺序排列
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // TODO Auto-generated method stub
                int num = 0;
                if (o1 > o2) num = 1;
                else if (o1 == o2) num = 0;
                else num = -1;
                return num;
                
            }            
        });
        System.out.println(list);
        /*[0, 1, 2, 3, 4, 5]*/
        
        // 逆序排列
        list.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                // TODO Auto-generated method stub
                int num = 0;
                if (o1 > o2) num = -1;
                else if (o1 == o2) num = 0;
                else num = 1;
                return num;
                
            }            
        });
        System.out.println(list);
        /*[5, 4, 3, 2, 1, 0]*/
    }

利用Collections.sort()排序

public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(1);
        list.add(3);
        list.add(2);
        list.add(4);
        list.add(5);
        list.add(0);
        
        // Collections.sort()默认顺序
        Collections.sort(list);
        System.out.println(list);
        /*[0, 1, 2, 3, 4, 5]*/
        
        // 自定义排序
        Collections.sort(list, new Comparator<Integer>() {

            @Override
            public int compare(Integer o1, Integer o2) {
                // TODO Auto-generated method stub
                return o2.compareTo(o1);
            }            
        });
        
        System.out.println(list);
        /*[5, 4, 3, 2, 1, 0]*/
    }
相关文章
|
4月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
4月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
4月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
2月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
60 5
|
2月前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
26 3
|
2月前
|
Java 程序员
Java|List.subList 踩坑小记
不应该仅凭印象和猜测,就开始使用一个方法,至少花一分钟认真读完它的官方注释文档。
23 1
|
4月前
|
Java 数据库
成功解决:java.sql.SQLSyntaxErrorException: Unknown column ‘origin_name‘ in ‘field list‘
这篇文章讲述了作者在使用SpringBoot和Mybatis-plus时遇到的一个数据库字段映射问题,即SQLSyntaxErrorException错误,原因是实体类字段和数据库字段不匹配。文章提供了两种解决方法:一是关闭自动驼峰命名转换配置,二是修改数据库字段以匹配实体类字段,最终成功解决了问题。
成功解决:java.sql.SQLSyntaxErrorException: Unknown column ‘origin_name‘ in ‘field list‘
|
4月前
|
存储 安全 Java
java集合框架复习----(2)List
这篇文章是关于Java集合框架中List集合的详细复习,包括List的特点、常用方法、迭代器的使用,以及ArrayList、Vector和LinkedList三种实现类的比较和泛型在Java中的使用示例。
java集合框架复习----(2)List
|
4月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
4月前
|
Java
用JAVA架建List集合为树形结构的代码方法
这段代码定义了一个表示树形结构的 `Node` 类和一个用于构建树形结构的 `TreeController`。`Node` 类包含基本属性如 `id`、`pid`、`name` 和 `type`,以及子节点列表 `children`。`TreeController` 包含初始化节点列表并将其转换为树形结构的方法。通过过滤和分组操作实现树形结构的构建。详情可见:[代码示例链接1](http://www.zidongmutanji.com/zsjx/43551.html),[代码效果参考链接2](https://www.257342.com/sitemap/post.html)。
44 5