Java之List

简介: Java之List

Java之List

ArrayList

简介:本文通过算法比赛和工程的视角,为大家用最简短的篇幅讲解Java中List系列的用法,包括ArrayList,LinkedList。

声明方式

从这里开始就是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]*/
  }

LinkedList

特有方法

addFirst addLast getFirst getLast removeFirst removeLast

LinkedList<String> list = new LinkedList<String>();
    list.add("123");
    list.add("1234");
    list.add("12345");
    list.add("123456");
    list.addFirst("1");
    list.addLast("10");
    System.out.println(list);
    /*
     * [1, 123, 1234, 12345, 123456, 10]
     */
    list.removeFirst();
    list.removeLast();    
    System.out.println(list);
    /*
     * [123, 1234, 12345, 123456]
     */
    System.out.println(list.getFirst());
    /*
     * 123
     */
    System.out.println(list.getLast());
    /*
     * 123456
     */

遍历方式

public static void main(String[] args) {
    LinkedList<String> list = new LinkedList<String>();
    list.add("123");
    list.add("1234");
    list.add("12345");
    list.add("123456");
    // 方法一
    for(int i = 0; i < list.size(); ++ i)
    {
      System.out.print(list.get(i) + " ");
    }
    System.out.println();
    /*123 1234 12345 123456 */
    // 方法二
    Iterator<String> it = list.iterator();
    while(it.hasNext())
    {
      System.out.print(it.next() + " ");
    }
    System.out.println();
    /*123 1234 12345 123456 */
    // 方法三
    for(String i : list)
    {
      System.out.print(i + " ");
    }
    /*123 1234 12345 123456 */
  }


相关文章
|
5月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
5月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
5月前
|
存储 Java
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
Java学习笔记 List集合的定义、集合的遍历、迭代器的使用
|
3月前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
77 5
|
3月前
|
Java 程序员 编译器
Java|如何正确地在遍历 List 时删除元素
从源码分析如何正确地在遍历 List 时删除元素。为什么有的写法会导致异常,而另一些不会。
76 3
|
3月前
|
Java 程序员
Java|List.subList 踩坑小记
不应该仅凭印象和猜测,就开始使用一个方法,至少花一分钟认真读完它的官方注释文档。
39 1
|
5月前
|
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‘
|
5月前
|
存储 安全 Java
java集合框架复习----(2)List
这篇文章是关于Java集合框架中List集合的详细复习,包括List的特点、常用方法、迭代器的使用,以及ArrayList、Vector和LinkedList三种实现类的比较和泛型在Java中的使用示例。
java集合框架复习----(2)List
|
5月前
|
存储 安全 Java
java集合框架复习----(4)Map、List、set
这篇文章是Java集合框架的复习总结,重点介绍了Map集合的特点和HashMap的使用,以及Collections工具类的使用示例,同时回顾了List、Set和Map集合的概念和特点,以及Collection工具类的作用。
java集合框架复习----(4)Map、List、set
|
5月前
|
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)。
54 5

热门文章

最新文章