首页 > 其他分享 >集合

集合

时间:2023-11-02 09:46:51浏览次数:23  
标签:迭代 ArrayList 元素 sites 集合 public

  实际开发中,常涉及各种数据结构,如列表、栈、队列等。他们能存储大量对象,有不同的存储特色和操作模式。Java将支持数据结构的一组类、接口统称为集合框架 ,封装在java.util包中。

  集合框架中的很多类功能是相似的,所以用接口来规范类。Collection和Map被视为Java集合框架里的两个根接口,代表两种不同特色数据集:集合和映射。集合直接存储对象,映射则是以键值对<key,value>方式存储对象。

Collection集合

  Collection集合是用来存放对象的容器,相对于数组而言它更加灵活,方便。通常把集合理解为加强的数组结构,因为它可以完成数组的所有能完成的事,并且还提供了很多可以使用的方法。要想学习集合就必须了解集合的结构。

  所有Collection的集合类都要继承Collection,它的两个直接子类,List和Set。这两个是接口不能直接创建对象,需要创建具体的子类对象。这两个子类的区别在于:

  • List 的特点是有索引、存取有序、可重复。
  • Set 的特点是无索引、存取无序(LinkedHashSet除外)、不可重复。

     List有两个重要的子类,一个是ArrayList和LinkedList。其中ArrayList是类似数组的存储结构,它的特点就是查询效率很高,但是添加删除元素效率很低。因为如果要改动某个地方,那么那个位置后面的元素都需要移动,所以效率低下。但是LinkedList就不一样,它是链表结构,对于链表结构来讲由于没有下标,所以查找效率低下,但是更改元素效率却很高。详情情况可参考数据结构里链表的增删。

1 Collection接口中的常用方法

Collection集合常用方法如下:

  • public boolean add(E e):把给定的对象添加到当前集合中 。
  • boolean addAll(Collection<? extends E> c) 把集合C中的元素全部添加到集合中,若指定集合元素改变返回true
  • public void clear():清空集合中所有的元素。
  • public boolean remove(E e):把给定的对象在当前集合中删除。
  • boolean removeAll(Collection<?> c) 删除指定集合包含集合c的元素
  • public boolean contains(E e):判断当前集合中是否包含给定的对象。
  • public boolean isEmpty():判断当前集合是否为空。
  • public int size():返回集合中元素的个数。 public Object[] toArray():把集合中的元素,存储到数组中。
  • T[] toArray(T[] a) 将集合转换为T类型的数组

1.1 Collection集合的遍历

迭代器遍历

  Java迭代器(Iterator)是 Java 集合框架中的一种机制,是一种用于遍历集合(如列表、集合和映射等)的接口。它提供了一种统一的方式来访问集合中的元素,而不需要了解底层集合的具体实现细节。

  迭代器接口定义了几个方法,最常用的是以下三个:

    • next() - 返回迭代器的下一个元素,并将迭代器的指针移到下一个位置。

    • hasNext() - 用于判断集合中是否还有下一个元素可以访问。

    • remove() - 从集合中删除迭代器最后访问的元素(可选操作)。

Iterator 类位于 java.util 包中,使用前需要引入它,语法格式如下:

import java.util.Iterator; // 引入 Iterator 类

  通过使用迭代器,我们可以逐个访问集合中的元素,而不需要使用传统的 for 循环或索引。这种方式更加简洁和灵活,并且适用于各种类型的集合。

  集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元素之前

举例:

1、获取一个迭代器

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("好");
        sites.add("好");
        sites.add("学");
        sites.add("习");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的第一个元素
        System.out.println(it.next());
    }
}

2、循环集合元素

// 引入 ArrayList 和 Iterator 类
import java.util.ArrayList;
import java.util.Iterator;

public class RunoobTest {
    public static void main(String[] args) {

        // 创建集合
        ArrayList<String> sites = new ArrayList<String>();
        sites.add("好");
        sites.add("好");
        sites.add("学");
        sites.add("习");

        // 获取迭代器
        Iterator<String> it = sites.iterator();

        // 输出集合中的所有元素
        while(it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

foreach遍历  

  foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。

public class Demo{
 
     public void static void main(String[] args){
 
         int[] arr = new int[]{1,3,6,2,9};
 
         for(int e : arr){
              System.out.print(e);
         }
    }
} 

任务需求

  创建一个存储学生对象的集合,存储3个学生对象,使用程序实现在控制台遍历该集合。

1.2 List集合概念和特点

List集合概述

  List集合是有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素。 List集合特点: 有索引 、可以存储重复元素 、元素存取有序.

       List 接口实现的类有: ArrayList(实现动态数组),Vector(实现动态数组),LinkedList(实现链表),Stack(实现堆栈)。 ArrayList集合 :底层是数组结构实现,查询快、增删慢 LinkedList集合 :底层是链表结构实现,查询慢、增删快

 List集合的常用方法    

(1)ArrayList集合的特有方法

(2)LinkedList集合的特有方法

任务需求

    实现医院病人排队叫号就诊程序,效果如下:

1.3 Set集合

  注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素,用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。

 

 

标签:迭代,ArrayList,元素,sites,集合,public
From: https://www.cnblogs.com/helloworldcode/p/17804667.html

相关文章

  • CEEMDAN+PE自适应噪声完备集合经验模态分解+排列熵重构分量 程序语言为matlab
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • Fluent UI System Icons 开源的图标集合
    软件介绍FluentUISystemIcons是由Microsoft开发的一个开源软件,它提供了一套丰富多样的系统图标,用于在应用程序和网站中使用。这些图标遵循FluentDesignSystem的设计原则,可用于增强用户界面的可视效果和交互性。功能特点1.丰富的系统图标库:FluentUISystemIcons提供......
  • QT高级(1)QTableView自定义委托集合,一个类实现若干委托
    @目录1同系列文章2功能3源码1同系列文章QT中级(1)QTableView自定义委托(一)实现QSpinBox、QDoubleSpinBox委托QT中级(2)QTableView自定义委托(二)实现QProgressBar委托QT中级(3)QTableView自定义委托(三)实现QCheckBox委托并且将QCheckBox居中QT中级(4)QTableView自定义委托(四)实现QDateTi......
  • c# list集合克隆
    在C#中,List集合是一种泛型集合,可以存储任何类型的对象。克隆一个List集合可以通过以下几种方式实现:使用List的构造函数使用List的构造函数可以创建一个新的List对象,并将原始List中的元素复制到新List中。例如:List<int>list1=newList<int>{1,2,3};......
  • 面试集合-JVM基础
    1.什么是JVM?JVM——Java虚拟机,它是Java实现平台无关性的基石。Java程序运行的时候,编译器将Java文件编译成平台无关的Java字节码文件(.class),接下来对应平台JVM对字节码文件进行解释,翻译成对应平台匹配的机器指令并运行。              ......
  • java8 集合操作功能
    Java8引入了许多新的集合操作功能,包括但不限于以下几项:forEach:使用Lambda表达式遍历集合中的每个元素。stream:将集合转换为流,以便进行各种操作,如过滤、映射、排序等。filter:根据指定的条件过滤集合中的元素,并返回过滤后的结果。map:将集合中的每个元素映射为另一个元素,并返回......
  • Python中的集合 Set
    set集合,集合的特点是无序的 写法:s={1,2,3}但是如果内容是空的,它不是set集合,而是dict字典s={}print(type(s))#输出结果<class'dict'>{}s={3,2,1}print(type(s))print(s)#输出结果<class'set'>{1,2,3}s={3,2,3}print(type(s))print(s)#输出结果<c......
  • 直播app源码,js图片下载方式集合
    直播app源码,js图片下载方式集合一、文件流格式下载创建a标签下载文件流格式图片 /** *创建<a>标签下载文件流格式图片 *@paramfile  *@paramfileName  */exportconstdownloadFile=(file:string,fileName?:string)=>{ constblob=newBlob([file]......
  • 07LinkedList集合
    LinkedList集合一、LinkedList集合底层数据结果是双链表,查询慢,增删快,但是如果操作是首尾元素,速度也是极快的。LinkedList本身多了很多直接操作首尾元素的特有API。特有方法说明publicvoidaddFirst(Ee)在该列表开头插入指定元素publicvoidaddList(Ee)......
  • java集合相关理解
    collection是java集合的最根本的接口collections是java集合的工具类 ArrayList是线程不安全的vector是线程安全的其实现继承均与ArrayList相同,但是其中方法多数添加了synchronized关键字stack继承了vector因此也是线程安全的  但是它实现了栈的数据结构。栈是一种后进......