Java 集合框架1

news2025/1/13 7:36:42

一、集合框架

        1.概念

二、Collection接口

        Collection接口之下有两个子接口:List接口/Set接口
        List接口是用来处理有序的单列数据,可以有重复的元素。
        Set接口是用来处理无序的单列数据,没有重复的元素,重复的元素算一个 

三、List接口

        List接口有两个子类:ArrayList类和LinkedList类

        1.ArrayList类:

                i.用来处理有序的单列数据,可以有重复的元素。
                ii.添加的元素会自动扩展。
                iii.动态数组结构,查询速度快,添加删除速度慢

                构造方法

//ArrayList类是List接口的子类
//ArrayList是处理有序数据列的,可以有重复数据,是动态数组结构,查询速度快,但添加和删除速度慢
//ArrayList的构造方法有三种
//1.ArrayList() 指定一个初始容量为10的空列表
ArrayList arrayList = new ArrayList();
//2.ArrayList(Collection) 将通过Collection实现的子类转换为ArrayList类
LinkedList linkedList = new LinkedList();
ArrayList arrayList1 = new ArrayList(linkedList);
//3.ArrayList(int initialCapacity) 自定义初始容量
ArrayList arrayList2 = new ArrayList(20);

                实例方法 

//ArrayList常用方法
//1.boolean add(Object obj)向ArrayList中添加元素,添加至末尾
arrayList.add("ceshi");
arrayList.add("9823");
arrayList.add(false);
arrayList.add(823.2);
arrayList.add("kjkasd");
arrayList.add(9823);
//2.boolean contains(Object obj)是否包含指定元素
System.out.println(arrayList.contains(823));
//3.Object get(int index) 获取指定位置的元素值
System.out.println(arrayList.get(3));
//4.int size() 获取列表长度
System.out.println(arrayList.size());
//5.int indexOf(Object obj) 获取第一次出现的位置
System.out.println(arrayList.indexOf("ceshi"));
//6.int lastIndexOf(Object obj) 获取最后一次出现的位置
System.out.println(arrayList.lastIndexOf("kjkasd"));
//7.boolean isEmpty() 查看列表是否为空
System.out.println(arrayList.isEmpty());
//8.Object remove(int index) 根据位置删除元素,返回的是被删除的元素
System.out.println(arrayList.remove(3));
//9.boolean remove(Object obj) 根据元素值删除元素,返回是布尔类型,
//如果有相同的数据,删除的是第一次出现的位置
System.out.println(arrayList.remove("9823"));
System.out.println(arrayList);
//10.Object set(int index,Object obj)修改指定位置的值,返回的是被修改的值
System.out.println(arrayList.set(1,true));
System.out.println(arrayList);
System.out.println("---------------普通for循环-----------------------");
//ArrayList循环
//普通for循环
for (int i=0;i<arrayList.size();i++){
     Object object = arrayList.get(i);
     System.out.println(object);
}
System.out.println("----------------for循环增强型------------------------");
//for循环增强型
for (Object object:arrayList){
     System.out.println(object);
}
System.out.println("-----------------迭代器遍历-----------------------");
//迭代器遍历
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()){
       Object object = iterator.next();
       System.out.println(object);
}

        2.LinkedList类:

                i.用来处理有序的单列数据,可以有重复的元素。
                ii.添加的元素会自动扩展。
                iii.双向链表结构,查询速度慢,添加删除速度快

                构造方法

//LinkedHashSet类是HashSet类的子类,是无序的单列数据,没有重复的元素,继承了父类的方法
//LinkedHashSet的构造方法
//LinkedHashSet()  默认创建一个空集合,初始容量为16,负载因子是0.75
LinkedHashSet hashSet = new LinkedHashSet();
//LinkedHashSet(Collection) 将Collection的子类,转化为LinkedHashSet类对象
ArrayList arrayList = new ArrayList();
LinkedHashSet hashSet1 = new LinkedHashSet(arrayList);
//LinkedHashSet(int?initialCapacity) 构造一个新的空集合; 具有指定的初始容量和默认负载因子(0.75)
LinkedHashSet hashSet2 = new LinkedHashSet(24);
//LinkedHashSet(int?initialCapacity, float?loadFactor) 具有指定的初始容量和指定的负载因子
LinkedHashSet hashSet3 = new LinkedHashSet(35,0.5f);

                实例方法

//HashSet中的方法,没有关于位置的方法,因为是无序的
//1.boolean add(Object obj) 添加元素,返回boolean
hashSet.add("ceshi");
hashSet.add(323);
hashSet.add("test");
hashSet.add("男");
hashSet.add(323);
System.out.println(hashSet);
//2.int size() 返回列表的长度
System.out.println(hashSet.size());
//3.boolean contains(Object obj) 列表中是否包含指定元素
System.out.println(hashSet.contains(323));
//4.boolean isEmpty() 是否为空列表
System.out.println(hashSet.isEmpty());
//5.boolean remove(Object obj) 根据元素值,移除指定元素
System.out.println(hashSet.remove(323));
System.out.println(hashSet);


//循环遍历
//因为没有顺序,也就没有位置,所以普通for无法使用
//增强型for循环
System.out.println("--------------增强型for循环------------");
for (Object object:hashSet){
      System.out.println(object);
}

//迭代器循环遍历
System.out.println("--------------迭代器循环遍历------------");
Iterator iterator = hashSet.iterator();
while (iterator.hasNext()){
       Object object = iterator.next();
       System.out.println(object);
}

四、ArrayList 和 LinkedList 的区别是什么?

        相同点

ArrayList 和 LinkedList 都是List接口的子类,间接实现Collection接口
Collection接口处理单列数据的接口,自然ArrayList 和 LinkedList都是处理单列数据的类

         不同点

ArrayList LinkedList
动态数据的存储结构    双向链表的存储结构
添加/删除数据慢,查询数据快添加/删除快,查询数据慢
没有提供对第一个和最后一个元素的操作方法提供对第一个和最后一个元素的操作方法
有10个单位的初始容量没有初始容量
扩容的步长是0.5倍原容量,扩容方式是利用数组的复制没有扩展机制

           

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/945036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Redis 7 第三讲 数据类型 进阶篇

⑥ *位图 bitmap 1. 理论 由0和1 状态表现的二进制位的bit 数组。 说明:用String 类型作为底层数据结构实现的一种统计二值状态的数据类型 位图本质是数组,它是基于String 数据类型的按位操作。该数组由多个二进制位组成,每个二进制位都对应一个偏…

DC/DC开关电源学习笔记(一)开关电源技术概述

&#xff08;一&#xff09;开关电源技术概述 1.什么是开关电源&#xff1f;2.开关电源技术概述2.1 小型化、薄型化、轻量化、高频化2.2 高可靠性2.3 低噪声2.4 采用计算机辅助设计和控制 1.什么是开关电源&#xff1f; 开关模式电源&#xff08;Switch Mode Power Supply&…

[JAVA学习笔记]常用类

String类&#xff1a; 一、存放位置&#xff1a; 字符串对象创建好后不能修改 String是引用数据类型&#xff0c;但是这里作为方法参数传递的时候&#xff0c;效果跟基本数据类型是一样的。也就是说在堆中创建出来的字符串”monkey”是不能被改变的&#xff0c;如果…

hadoop 学习:mapreduce 入门案例一:WordCount 统计一个文本中单词的个数

一 需求 这个案例的需求很简单 现在这里有一个文本wordcount.txt&#xff0c;内容如下 现要求你使用 mapreduce 框架统计每个单词的出现个数 这样一个案例虽然简单但可以让新学习大数据的同学熟悉 mapreduce 框架 二 准备工作 &#xff08;1&#xff09;创建一个 maven 工…

Node爬虫项目精简版 wallhaven网站实操 2023.8.29

练习地址&#xff1a; https://wallhaven.cc/toplist const express require(express); const axios require(axios); const cheerio require(cheerio); const schedule require(node-schedule); const fs require(fs);async function downloadImage(url) {const response…

全国工业和信息化应用人才考试-- 服务外包 软件测试复习整理

试卷 201服务外包软件测试考试样卷(1)【附答案】 单项选择题&#xff08;每题1分&#xff0c;共40题40分&#xff09; 多项选择题&#xff08;每题2分&#xff0c;共10题20分&#xff09; 判断题&#xff08;每题1分&#xff0c;共10题10分&#xff09; 填空题&#xff…

基于stm32的ADS1292R 心电波形采集

一、前言 ADS1292R是TI公司早在几年前出产的一款医用级ADC芯片&#xff0c;它主要应用在医疗仪器(心电图ECG),可以监护患者以及病人护理和健身监视器。ADS1292R集成了心电采集所需要的部件&#xff0c;方便设备小型化。它的功耗极低&#xff0c;使得可以作为长时间监控成为可能…

CausalEGM安装使用

1代码来源 github&#xff1a;https://github.com/SUwonglab/CausalEGM/tree/main/src pip&#xff1a;Tutorial for Python Users — CausalEGM documentation 安装&#xff1a;Installation — CausalEGM documentation 版本&#xff1a; 2原理 关于CausalEGM 根据观察…

[文本挖掘和知识发现] 01.红楼梦主题演化分析——文献可视化分析软件CiteSpace入门

八月太忙&#xff0c;还是写一篇吧&#xff01; 本文是作者2023年8月底新开的专栏——《文本挖掘和知识发现》&#xff0c;主要结合Python、大数据分析和人工智能分享文本挖掘、知识图谱、知识发现、图书情报等内容。此外&#xff0c;这些内容也是作者《文本挖掘和知识发现&…

vector实现遇到的问题

前言&#xff1a;vector是表示可变大小数组的序列容器。就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而且它…

【C/C++】课程设计:通讯录管理系统源码,C语言链表实现

大家好呀&#xff0c;亲爱的小伙伴们&#xff01;你们今天有在编写代码吗&#xff1f; 如果有熟悉的小伙伴看到我&#xff0c;就会知道又到了学习源码项目的好时机了&#xff01;没错&#xff0c;今天要分享的同样是一个经典的管理系统项目&#xff1a;通信录管理系统&#xf…

小白学Linux都能学会

文章目录 1. 初识Linux1.1 操作系统1.2 Linux发展历程1.3 Linux简介1.3.1 什么是 Linux1.3.2 Linux的特点 1.4 Linux和Unix区别1.5 Linux和Windows区别1.6 Linux发行商和常见发行版1.7 Linux 应用领域**1.8 Linux之CentOS**1.9 总结 2. 系统与设置命令2.1 学习命令的原因2.2 Li…

7天GMV达220万美元!TikTok Shop爆品榜出炉。

7天GMV达220万美元&#xff01;TikTok Shop爆品榜出炉 8月28日消息&#xff0c;据跨境指南联合TikTok数据分析平台EchoTik发布的数据&#xff0c;监测了上周TikTok Shop印尼、马来西亚、泰国、美国市场GMV前10的商品。上周在印尼市场GMV排名前10的商品中&#xff1a;FREE ONGK…

Kotlin协程flow缓冲buffer

Kotlin协程flow缓冲buffer 先看一个普通的flow&#xff1a; import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlinx.coroutines.runBlocking import kotlin.system.measureTimeMillisfun main(args: Array<String>) {val delayTime 100Lru…

初试nacos服务注册中心

项目基本流程是想获取订单信息的同时获取用户信息&#xff0c;所以order服务提供nacos获取user服务提供的用户信息。 启动nacos服务 在bin目录下的cmd命令行下执行 startup.cmd -m standalone 单机部署 启动服务 服务注册到nacos Nacos是SpringCloudAlibaba的组件&#xff0c…

Yolov8小目标检测(12):动态稀疏注意力BiFormer | CVPR 2023

💡💡💡本文改进:动态稀疏注意力,cvpr2023。 BiFormer | 亲测在红外弱小目标检测涨点,map@0.5 从0.755提升至0.758 💡💡💡Yolo小目标检测,独家首发创新(原创),适用于Yolov5、Yolov7、Yolov8等各个Yolo系列,专栏文章提供每一步步骤和源码,带你轻松实现小…

【GPT,Flask】用Python Flask结合OpenAI的GPT API构建一个可自主搭建的内容生成应用网站

【背景】 自己构建模型并进行训练需要很高的知识,技能和资源门槛。如今,通过OpenAI提供的API,则可以快速通过GPT能力构建可以提供内容生成服务的在线网站。这套框架可以提供给用户,用户可以利用该框架在自己的环境(比如自己的公司内)构建内容生成服务。你也可以自己上线…

【C++入门】模版初阶(泛型编程)

目录 1.泛型编程2.函数模版2.1函数模版的概念2.2函数模版的使用2.3函数模版的原理2.4函数模版的实例化2.5 模板参数的匹配原则 3.类模版3.1类模版的定义格式3.2类模版的实例化 1.泛型编程 让我们思考一个小问题&#xff1a;如何实现一个通用的交换函数呢&#xff1f; 在解决这…

自动泊车的自动驾驶控制算法

1. 自动泊车系统 自动泊车系统(AutomatedParkingASSiSt,APA)利用车辆搭载的传感器感知车辆周边环境,扫描满足当前车辆停放的障碍物空间车位或线车位,并通过人机交互(HumanMachine Interface,HMI)获取驾驶员对目标车位的选择或自动确定目标车位,自动规划泊车路径,通过控制器向车…