【JavaSE】Java基础语法(二十六):Collection集合

简介: 1. 数组和集合的区别相同点都是容器,可以存储多个数据不同点数组的长度是不可变的,集合的长度是可变的数组可以存基本数据类型和引用数据类型集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类

1. 数组和集合的区别

  • 相同点
    都是容器,可以存储多个数据
  • 不同点
    数组的长度是不可变的,集合的长度是可变的
    数组可以存基本数据类型和引用数据类型
    集合只能存引用数据类型,如果要存基本数据类型,需要存对应的包装类

2. 集合类体系结构

f613c13e8ff34d68a99faa11e570fa73.png

3. Collection 集合概述和使用【应用】

Collection集合概述


是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素

JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现

创建Collection集合的对象


多态的方式

具体的实现类ArrayList

Collection集合常用方法

9455a8ccb8c34d248ecd26daba883dfd.png

4. Collection集合的遍历【应用】

  • 迭代器介绍
  • 迭代器,集合的专用遍历方式

Iterator iterator(): 返回此集合中元素的迭代器,通过集合对象的iterator()方法得到

Iterator中的常用方法

boolean hasNext(): 判断当前位置是否有元素可以被取出

E next(): 获取当前位置的元素,将迭代器对象移向下一个索引位置

  • Collection集合的遍历
public class IteratorDemo1 {
  public static void main(String[] args) {
    //创建集合对象
    Collection<String> c = new ArrayList<>();
    //添加元素
    c.add("hello");
    c.add("world");
    c.add("java");
    c.add("javaee");
    //Iterator<E> iterator():返回此集合中元素的迭代器,通过集合的iterator()方
    法得到
    Iterator<String> it = c.iterator();
    //用while循环改进元素的判断和获取
    while (it.hasNext()) {
      String s = it.next();
      System.out.println(s);
    }
  }
}
  • 迭代器中删除的方法
    void remove(): 删除迭代器对象当前指向的元素
public class IteratorDemo2 {
  public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");list.add("b");list.add("b");
    list.add("c"); list.add("d");
    Iterator<String> it = list.iterator();
    while(it.hasNext()){
      String s = it.next();
      if("b".equals(s)){
        //指向谁,那么此时就删除谁.
        it.remove();
      }
    }
    System.out.println(list);
  }
}

注意:集合的删除,需要注意在遍历的过程中,删除后对集合的影响(不能使用普通for循环进行删除操作)

参考:https://blog.csdn.net/m0_60915009/article/details/129850778

5. 增强for循环【应用】

所有的单列集合都可以使用迭代器和增强FOR循环;

  • 介绍
  • 它是JDK5之后出现的,其内部原理是一个Iterator迭代器
  • 实现Iterable接口的类才可以使用迭代器和增强for
  • 简化数组和Collection集合的遍历
  • 格式
for(集合/数组中元素的数据类型 变量名 : 集合/数组名) {
  // 已经将当前遍历到的元素封装到变量中了,直接使用变量即可
}
  • 代码
public class MyCollectonDemo1 {
  public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<>();
    list.add("a");
    list.add("b");
    list.add("c");
    list.add("d");
    list.add("e");
    list.add("f");
    //1,数据类型一定是集合或者数组中元素的类型
    //2,str仅仅是一个变量名而已,在循环的过程中,依次表示集合或者数组中的每一个元素,修
    改其不会影响集合中的元素
    //3,list就是要遍历的集合或者数组
    for(String str : list){
      System.out.println(str);
    }
  }
}
  • 三种循环的使用场景:
  • 如果需要操作索引,就使用普通for循环;
  • 如果在遍历过程中需要删除元素,就使用迭代器;
  • 如果仅仅是遍历,就使用增强for循环;

相关文章
|
13天前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
23 2
|
12天前
|
安全 Java
Java多线程集合类
本文介绍了Java中线程安全的问题及解决方案。通过示例代码展示了使用`CopyOnWriteArrayList`、`CopyOnWriteArraySet`和`ConcurrentHashMap`来解决多线程环境下集合操作的线程安全问题。这些类通过不同的机制确保了线程安全,提高了并发性能。
|
17天前
|
存储 Java
判断一个元素是否在 Java 中的 Set 集合中
【10月更文挑战第30天】使用`contains()`方法可以方便快捷地判断一个元素是否在Java中的`Set`集合中,但对于自定义对象,需要注意重写`equals()`方法以确保正确的判断结果,同时根据具体的性能需求选择合适的`Set`实现类。
|
17天前
|
存储 Java 开发者
在 Java 中,如何遍历一个 Set 集合?
【10月更文挑战第30天】开发者可以根据具体的需求和代码风格选择合适的遍历方式。增强for循环简洁直观,适用于大多数简单的遍历场景;迭代器则更加灵活,可在遍历过程中进行更多复杂的操作;而Lambda表达式和`forEach`方法则提供了一种更简洁的函数式编程风格的遍历方式。
|
17天前
|
存储 Java 开发者
Java中的集合框架深入解析
【10月更文挑战第32天】本文旨在为读者揭开Java集合框架的神秘面纱,通过深入浅出的方式介绍其内部结构与运作机制。我们将从集合框架的设计哲学出发,探讨其如何影响我们的编程实践,并配以代码示例,展示如何在真实场景中应用这些知识。无论你是Java新手还是资深开发者,这篇文章都将为你提供新的视角和实用技巧。
14 0
|
6月前
|
存储 安全 Java
java集合框架及其特点(List、Set、Queue、Map)
java集合框架及其特点(List、Set、Queue、Map)
|
3月前
|
存储 安全 Java
【Java集合类面试二十五】、有哪些线程安全的List?
线程安全的List包括Vector、Collections.SynchronizedList和CopyOnWriteArrayList,其中CopyOnWriteArrayList通过复制底层数组实现写操作,提供了最优的线程安全性能。
|
3月前
|
Java
【Java集合类面试二十三】、List和Set有什么区别?
List和Set的主要区别在于List是一个有序且允许元素重复的集合,而Set是一个无序且元素不重复的集合。
|
29天前
|
安全 Java 程序员
深入Java集合框架:解密List的Fail-Fast与Fail-Safe机制
本文介绍了 Java 中 List 的遍历和删除操作,重点讨论了快速失败(fail-fast)和安全失败(fail-safe)机制。通过普通 for 循环、迭代器和 foreach 循环的对比,详细解释了各种方法的优缺点及适用场景,特别是在多线程环境下的表现。最后推荐了适合高并发场景的 fail-safe 容器,如 CopyOnWriteArrayList 和 ConcurrentHashMap。
58 5
|
3月前
|
存储 安全 Java
java集合框架复习----(2)List
这篇文章是关于Java集合框架中List集合的详细复习,包括List的特点、常用方法、迭代器的使用,以及ArrayList、Vector和LinkedList三种实现类的比较和泛型在Java中的使用示例。
java集合框架复习----(2)List
下一篇
无影云桌面