List集合

List集合

  1. list集合常用方法

    • 执行路口

      package cn.xiaoge.day14.demo01;
      
      /*
          java.util.list接口 extends Collection接口
      
          list接口的特点:
              1. 有序的集合, 存储元素和取出元素的顺序是一致的(存储123 取出123)
              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: 数组索引越界异常
              StringIndexOutOfBoundException: 字符串索引越界异常
       */
      
      import java.util.ArrayList;
      import java.util.Iterator;
      import java.util.List;
      
      public class Demo01List {
      
          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");
      
              // 打印下集合
              System.out.println(list); // [a, b, c, d, a] 不是地址 从写了toString方法
              System.out.println("==========================");
      
      
              /*
                  public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
                  在c和d之间添加一个xiaogeit
               */
              list.add(3, "xiaogeit");
              System.out.println(list); // [a, b, c, xiaogeit, d, a]
              System.out.println("==========================");
      
      
              /*
                  public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
                  移除元素
               */
              String removeE = list.remove(2);
              System.out.println("被删除的元素:" + removeE); // 被删除的元素:c
              System.out.println(list); // [a, b, xiaogeit, d, a]
              System.out.println("==========================");
      
      
              /*
                  public E set(int index, E element) :用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
                  把最后一个a替换为大写的A
               */
              String setE = list.set(4, "A");
              System.out.println("被替换的元素:" + setE); // 被替换的元素:a
              System.out.println(list); // [a, b, xiaogeit, d, A]
              System.out.println("==========================");
      
      
              /*
                  list集合遍历有3种方式
                  使用普通的for循环
                  public E get(int index) :返回集合中指定位置的元素。
               */
              for (int i = 0; i < list.size(); i++) {
                  System.out.print(list.get(i) + " "); // a b xiaogeit d A
              }
              System.out.println("");
              System.out.println("==========================");
      
      
              // 使用迭代器遍历
              Iterator<String> it = list.iterator();
              while(it.hasNext()) {
                  System.out.println(it.next());
              }
              System.out.println("==========================");
      
      
              // 使用增强for
              for (String s : list) {
                  System.out.println(s);
              }
              System.out.println("==========================");
      
      
              // String s = list.get(5); // IndexOutOfBoundsException
              // System.out.println(s);
          }
      
      }
      
      // 运行结果
      ==========================
      a b xiaogeit d A 
      ==========================
      a
      b
      xiaogeit
      d
      A
      ==========================
      a
      b
      xiaogeit
      d
      A
      ==========================
      
  2. LinkedList集合特有方法

    • 执行路口

      package cn.xiaoge.day14.demo01;
      
      /*
          java.util.LinkedList集合 implements List接口
          LinkedList集合的特点:
              1. 底层是一个链表结构: 查询慢, 增删块
              2. 里面包含了大量操作首尾元素的方法
      
              注意: 使用LinkedList集合特有的方法, 不能使用多态
      
              public void addFirst(E e) :将指定元素插入此列表的开头。
              public void addLast(E e) :将指定元素添加到此列表的结尾。
              public void push(E e) :将元素推入此列表所表示的堆栈。
      
              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 Demo02LinkedList {
      
          public static void main(String[] args) {
              show01();
              show02();
              show03();
          }
      
      
          /*
              public E removeFirst() :移除并返回此列表的第一个元素。
              public E removeLast() :移除并返回此列表的最后一个元素。
              public E pop() :从此列表所表示的堆栈处弹出一个元素。 此方法相当于removeFirst()
           */
          private static void show03() {
              // 创建LinkedList集合对象
              LinkedList<String> linked = new LinkedList<>();
              linked.add("a");
              linked.add("b");
              linked.add("c");
              System.out.println(linked);
              System.out.println("*****************************");
      
      
              /*
                  public E removeFirst() :移除并返回此列表的第一个元素。
               */
              String firstElement = linked.removeFirst();
              System.out.println(firstElement); // a
              System.out.println(linked); // [b, c]
              System.out.println("*****************************");
      
      
              /*
                  public E removeLast() :移除并返回此列表的最后一个元素。
               */
              String lastElement = linked.removeLast();
              System.out.println(lastElement); // c
              System.out.println(linked); // [b]
              System.out.println("*****************************");
      
      
              /*
                  public E pop() :从此列表所表示的堆栈处弹出一个元素。 此方法相当于removeFirst()
               */
              String element = linked.pop();
              System.out.println(element); // b
              System.out.println(linked);  // []
              System.out.println("**********show03结束**********");
      
          }
      
      
          /*
              public E getFirst() :返回此列表的第一个元素。
              public E getLast() :返回此列表的最后一个元素。
           */
          private static void show02() {
              // 创建LinkedList集合对象
              LinkedList<String> linked = new LinkedList<>();
              linked.add("a");
              linked.add("b");
              linked.add("c");
      
              // linked.clear(); // 清空集合中的元素 在获取集合中的元素会抛出NoSuchElementException
      
      
              /*
                  public boolean isEmpty() :如果列表不包含元素,则返回true。
               */
              if (!linked.isEmpty()){
                  /*
                  public E getFirst() :返回此列表的第一个元素。
               */
                  String firstElement = linked.getFirst();
                  System.out.println(firstElement); // a
                  System.out.println("*****************************");
      
      
              /*
                  public E getLast() :返回此列表的最后一个元素。
               */
                  String lastElement = linked.getLast();
                  System.out.println(lastElement);  // c
              }
              System.out.println("**********show02结束**********");
          }
      
      
          /*
              public void addFirst(E e) :将指定元素插入此列表的开头。
              public void addLast(E e) :将指定元素添加到此列表的结尾。
              public void push(E e) :将元素推入此列表所表示的堆栈。 此方法等效于addFirst()
           */
          private static void show01() {
              // 创建LinkedList集合对象
              LinkedList<String> linked = new LinkedList<>();
      
              // 使用add方法往集合中添加元素
              linked.add("a");
              linked.add("b");
              linked.add("c");
              System.out.println(linked); // [a, b, c]
              System.out.println("*****************************");
      
      
              /*
                  public void addFirst(E e) :将指定元素插入此列表的开头。
               */
              linked.addFirst("www");
              System.out.println(linked); // [www, a, b, c]
              System.out.println("*****************************");
      
      
              /*
                  public void push(E e) :将元素推入此列表所表示的堆栈。 此方法等效于addFirst()
               */
              linked.push("baidu");
              System.out.println(linked); // [baidu, www, a, b, c]
              System.out.println("*****************************");
      
      
              /*
                  public void addLast(E e) :将指定元素添加到此列表的结尾。 此方法等效于add()
               */
              linked.addLast("com");
              System.out.println(linked);
              System.out.println("**********show01结束**********");
          }
      
      }
      
      // 运行结果
      [a, b, c]
      *****************************
      [www, a, b, c]
      *****************************
      [baidu, www, a, b, c]
      *****************************
      [baidu, www, a, b, c, com]
      **********show01结束**********
      a
      *****************************
      c
      **********show02结束**********
      [a, b, c]
      *****************************
      a
      [b, c]
      *****************************
      c
      [b]
      *****************************
      b
      []
      **********show03结束**********
      
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只因为你温柔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值