java学习之高级语法(十)----- list集合

简介: java学习之高级语法(十)----- list集合


List集合
java.util.list接口 extends Collection接口

▶  list接口的特点:

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

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

(3)允许存储重复元素

▶  list接口中带索引的方法(特有方法):

(1)public void add(int index ,E element) --- 将指定的元素添加到该集合中的指定位置上

(2)public E get(int index) --- 返回集合中指定位置的元素

(3)public E remove(int index) --- 移除列表中指定位置的元素,返回的是被移除的元素

(4)public E set(int index , E element ) --- 用指定元素替换集合中指定位置的元素,返回值是更新前的元素

【注意:在用到索引的时候一定要防止索引越界

               IndexOutofBoundException --- 集合索引越界异常

               ArrayIndexOutOfBoundsException --- 数组索引越界异常

               StringIndexOutOfBoundsException --- 字符串索引越界异常

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

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("d");
    list.add("a");
    
    // 打印集合,输出的不是地址说明重写了toString()方法
    System.out.println(list);
    
    // 在c和d之间添加一个xiaochi
    list.add(3,"xiaochi");
    System.out.println(list);
    
    // 移除元素c
    String m = list.remove(2);
    System.out.println("被移除的元素:"+m);
    System.out.println(list);
    
    // 替换最后一个a为A
    String n = list.set(4,"A");
    System.out.println("被替换的元素:"+n);
    System.out.println(list); 
    
    
    // list集合遍历有3种方式
    // ① 使用普通的for循环
    for(int i = 0;i<list.size();i++) {
        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) ;
        
    }
    // ③使用增强for循环
    for(String s : list) {
        
        System.out.println(s);
        
    }
    
}

}
▶  list集合有两个实现类:

(1)ArrayList 集合

        查看该集合的底层代码可以发现它其实是数组,而数组的特点是 “ 查询快,增删慢 ” ,所以这个集合的特点也是 “查询快,增删慢 ”

(2)LinkedList 集合

        java.util.LinkedList 集合 implements List 接口

        LinkedList 集合的特点:① 底层是一个链表结构:查询慢,增删快

                                               ② 里面包含了大量的操作首尾元素的方法

                                               ③ 使用LinkedList 集合特有的方法,不能使用多态

       常见方法:public void addFirst(E e) --- 将指定元素插入此列表的开头

                         public void addLast(E e) --- 将指定元素添加到此列表的结尾

                         public void push(E e) --- 将元素推入此列表所表示的堆栈(等效于 addFirst()方法 )

                         public E getFirst() --- 返回此列表的第一个元素

                         public E getLast() --- 返回此列表的最后一个元素

                         public E removeFirst() --- 移除并返回此列表的第一个元素

                         public E removeLast() --- 移除并返回此列表的最后一个元素

                         public E pop() --- 从此列表所表示的堆栈处弹出一个元素

                         public boolean isEmpty() --- 如果列表不包含元素则返回true

import java.util.LinkedList;

public class Demo02 {

public static void main(String[] args) {
    
    show01() ;
    show02() ;
    show03() ;

}

private static void show01() {
    
    // 创建LinkedList集合对象
    LinkedList<String> linked = new LinkedList<>() ;
    // 使用add方法往集合中添加元素
    linked.add("a");
    linked.add("b");
    linked.add("c");
    System.out.println(linked);
    
    // 往集合开头添加元素
    linked.addFirst("xiaochi");
    linked.push("www");
    System.out.println(linked);
    
    // 往集合结尾添加元素
    linked.addLast("aaa");
    System.out.println(linked);
    
}

private static void show02() {
    
    // 创建LinkedList集合对象
            LinkedList<String> linked1 = new LinkedList<>() ;
            // 使用add方法往集合中添加元素
            linked1.add("a");
            linked1.add("b");
            linked1.add("c");
            System.out.println(linked1);
            
    String first = linked1.getFirst() ;
    System.out.println(first);
    String last = linked1.getLast() ;
    System.out.println(last);
    
}

private static void show03() {
    
    // 创建LinkedList集合对象
            LinkedList<String> linked2 = new LinkedList<>() ;
            // 使用add方法往集合中添加元素
            linked2.add("a");
            linked2.add("b");
            linked2.add("c");
            System.out.println(linked2);
            
    String first = linked2.removeFirst() ;
    System.out.println(first);
    String last = linked2.removeLast() ;
    System.out.println(last);
    System.out.println(linked2);
    
}

}

相关文章
|
1月前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
36 10
|
1月前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
118 4
|
1月前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
38 4
|
1月前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
56 1
|
Java Apache
Java 中 List 分片的 5 种方法!(5)
Java 中 List 分片的 5 种方法!(5)
332 0
Java 中 List 分片的 5 种方法!(5)
|
Java
Java 中 List 分片的 5 种方法!(4)
Java 中 List 分片的 5 种方法!(4)
458 0
Java 中 List 分片的 5 种方法!(4)
|
Java
Java 中 List 分片的 5 种方法!(3)
Java 中 List 分片的 5 种方法!(3)
634 0
Java 中 List 分片的 5 种方法!(3)
|
Java
Java 中 List 分片的 5 种方法!(2)
Java 中 List 分片的 5 种方法!(2)
447 0
Java 中 List 分片的 5 种方法!(2)
|
SQL Java 关系型数据库
Java 中 List 分片的 5 种方法!(1)
Java 中 List 分片的 5 种方法!(1)
423 0
Java 中 List 分片的 5 种方法!(1)
|
12天前
|
Java 程序员 开发者
Java社招面试题:一个线程运行时发生异常会怎样?
大家好,我是小米。今天分享一个经典的 Java 面试题:线程运行时发生异常,程序会怎样处理?此问题考察 Java 线程和异常处理机制的理解。线程发生异常,默认会导致线程终止,但可以通过 try-catch 捕获并处理,避免影响其他线程。未捕获的异常可通过 Thread.UncaughtExceptionHandler 处理。线程池中的异常会被自动处理,不影响任务执行。希望这篇文章能帮助你深入理解 Java 线程异常处理机制,为面试做好准备。如果你觉得有帮助,欢迎收藏、转发!
69 14

热门文章

最新文章