【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解

简介: 【蓝桥杯Java_C组·从零开始卷】第八节、集合——list详解

咱们挨个看看啊,先看

list基础增 删 改 查

add增加

remove删除

set修改

get查询

package Action;
import java.util.ArrayList;
public class demo {
  public static void main(String[] args) {
    ArrayList<Integer> arrayList = new ArrayList<Integer>();
    //增加
    arrayList.add(111);
    arrayList.add(222);
    arrayList.add(333);
    arrayList.add(444);
    arrayList.add(555);
    arrayList.add(666);
    System.out.println("集合元素有:"+arrayList);
    //删除·根据下标删除
    arrayList.remove(3);
    System.out.println("集合元素删除下标3后:"+arrayList);
    //修改
    arrayList.set(2, 777);
    System.out.println("集合元素修改下标2为777后:"+arrayList);
    //查询
    Integer index2 = arrayList.get(2);
    System.out.println("下标是2的值是:"+index2);
  }
}

image.png

算法中最常用的交换

Collections.swap(list,2,3);//目的是将变量名为list的列表下标为2和3位置上的值进行交换

package Action;
import java.util.ArrayList;
import java.util.Collections;
public class demo {
  public static void main(String[] args) {
    ArrayList<Integer> arrayList = new ArrayList<Integer>();
    //增加
    arrayList.add(111);
    arrayList.add(222);
    arrayList.add(333);
    arrayList.add(444);
    arrayList.add(555);
    arrayList.add(666);
    System.out.println("交换前元素顺序:"+arrayList);
    Collections.swap(arrayList, 1, 5);
    System.out.println("交换后元素顺序:"+arrayList);
  }
}

效果:


image.png


自然排序

Collections.sort(list); 
package Action;
import java.util.ArrayList;
import java.util.Collections;
public class demo {
  public static void main(String[] args) {
  ArrayList<Integer> arrayList = new ArrayList<Integer>();
  //增加
  arrayList.add(555);
  arrayList.add(666);
  arrayList.add(111);
  arrayList.add(333);
  arrayList.add(222);
  arrayList.add(444);
  System.out.println("排序前元素顺序:"+arrayList);
  Collections.sort(arrayList);
  System.out.println("排序后元素顺序:"+arrayList);
  }
}



image.png

反向排序·注不是倒序,不是倒序,不是倒序

package Action;
import java.util.ArrayList;
import java.util.Collections;
public class demo {
  public static void main(String[] args) {
  ArrayList<Integer> arrayList = new ArrayList<Integer>();
  //增加
  arrayList.add(555);
  arrayList.add(666);
  arrayList.add(111);
  arrayList.add(333);
  arrayList.add(222);
  arrayList.add(444);
  System.out.println("反向排序前元素顺序:"+arrayList);
  Collections.reverse(arrayList);
  System.out.println("反向排序后元素顺序:"+arrayList);
  }
}


image.png


随机排序

package Action;
import java.util.ArrayList;
import java.util.Collections;
public class demo {
  public static void main(String[] args) {
  ArrayList<Integer> arrayList = new ArrayList<Integer>();
  //增加
  arrayList.add(111);
  arrayList.add(222);
  arrayList.add(333);
  arrayList.add(444);
  arrayList.add(555);
  arrayList.add(666);
  System.out.println("随机排序前元素顺序:"+arrayList);
  Collections.shuffle(arrayList);//随机排序·适合洗牌
  System.out.println("随机排序后元素顺序:"+arrayList);
  }
}


效果


image.png


判断是否有某元素

package Action;
import java.util.ArrayList;
import java.util.Collections;
public class demo {
  public static void main(String[] args) {
  ArrayList<Integer> arrayList = new ArrayList<Integer>();
  //增加
  arrayList.add(111);
  arrayList.add(222);
  arrayList.add(333);
  arrayList.add(444);
  arrayList.add(555);
  arrayList.add(666);
  System.out.println("集合元素表:"+arrayList);
  //判断是否存在某值
  int info=666;
  boolean contains = arrayList.contains(info);
  System.out.println((contains?"有":"没有")+info+"元素");
  }
}


效果


image.png


集合截取

package Action;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class demo {
  public static void main(String[] args) {
  ArrayList<Integer> arrayList = new ArrayList<Integer>();
  //增加
  arrayList.add(111);
  arrayList.add(222);
  arrayList.add(333);
  arrayList.add(444);
  arrayList.add(555);
  arrayList.add(666);
  System.out.println("原集合元素列表:"+arrayList);
  //截取后增加某元素
  List<Integer> subList = arrayList.subList(2, 4);
  subList.add(250);
  System.out.println("截取的元素列表:"+subList);
  //被动的在小标为4的位置上增加了一个250的值
  System.out.println("原集合元素列表:"+arrayList);
  }
}


效果


image.png


加强for循环foreach遍历列表

package Action;
import java.util.ArrayList;
public class demo {
  public static void main(String[] args) {
  ArrayList<Integer> arrayList = new ArrayList<Integer>();
  //增加
  arrayList.add(111);
  arrayList.add(222);
  arrayList.add(333);
  arrayList.add(444);
  arrayList.add(555);
  arrayList.add(666);
  //foreach遍历
  for (Integer i : arrayList) {
    System.out.println(i);
  }
  }
}


效果


image.png


用的最多的就是【ArrayList】所以针对它进行一个使用详情的演示操作,【LinkedList】操作都是类似的。下篇文章我会对照的比较一下【ArrayList】与【LinkedList】的【增删查】效率,以后你就能知道具体在什么时候用那个列表了。


相关文章
|
12天前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
25 3
|
27天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
27 2
|
1月前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
27天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
1月前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
1月前
|
Java 开发者
|
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 时删除元素。为什么有的写法会导致异常,而另一些不会。
33 3
|
2月前
|
Java 程序员
Java|List.subList 踩坑小记
不应该仅凭印象和猜测,就开始使用一个方法,至少花一分钟认真读完它的官方注释文档。
24 1
|
2月前
|
安全 Java 程序员
Java集合之战:ArrayList vs LinkedList,谁才是你的最佳选择?
本文介绍了 Java 中常用的两个集合类 ArrayList 和 LinkedList,分析了它们的底层实现、特点及适用场景。ArrayList 基于数组,适合频繁查询;LinkedList 基于链表,适合频繁增删。文章还讨论了如何实现线程安全,推荐使用 CopyOnWriteArrayList 来提升性能。希望帮助读者选择合适的数据结构,写出更高效的代码。
71 3