Java集合框架-1

目录

List集合

常见方法

迭代器(Iterator)

List集合特有方法

List 的特点

创建 List

遍历List


Java集合框架是Java编程语言提供的各种数据结构和算法的实现。它提供了不同类型的集合类,如列表(List)、集(Set)、映射(Map)等,以及一组接口和类来操作和处理集合数据。Java集合框架的主要类和接口包括:1. Collection接口:它是所有集合类的根接口,定义了集合对象的基本方法,如添加、删除、查询等。常见的实现类有List和Set。2. List接口:它是有序的集合,允许重复元素。常见的实现类有ArrayList、LinkedList和Vector。3. Set接口:它是无序的集合,不允许重复元素。常见的实现类有HashSet、TreeSet和LinkedHashSet。4. Map接口:它是一种键值对的集合,每个元素包含一个键和一个值。常见的实现类有HashMap、TreeMap和LinkedHashMap。集合框架提供了许多通用的方法,如add()、remove()和contains()等,以便操作集合中的元素。此外,它还提供了迭代器(Iterator)来遍历集合中的元素。Java集合框架的好处包括:
- 提供了丰富的数据结构和算法的实现,方便开发者使用和操作集合数据。
- 统一了集合类的接口和方法,使得代码更加简洁、可读性更高。
- 提供了线程安全和高效的实现,能够处理大量数据和高并发情况。
- 可以与其他Java类库和框架很好地集成,提供更强大的功能和性能。总之,Java集合框架是Java编程中非常重要和常用的一部分,它提供了大量的集合类和接口,方便开发者进行集合操作和处理。通过熟悉集合框架的使用,可以提高程序的开发效率和性能。

List集合

常见方法
 List 是一个接口,它是最基础的一种集合:它是一种有序列表。它的常用子类包括:ArrayList:基于动态数组实现,支持随机访问。LinkedList:基于双向链表实现,只能顺序访问,但是可以快速地在链表中间插入和删除元素。不仅如此,LinkedList 还可以用作栈、队列和双向队列。Vector:和 ArrayList 类似,但它是线程安全的。Stack:它实现了一个标准的后进先出的栈,是 Vector 的子类。
CopyOnWriteArrayList:一个线程安全的 ArrayList。


import java.util.ArrayList;
import java.util.List;public class Arraylist_test01 {public static void main(String[] args) {new ArrayList<>();/*** new ArrayList<泛型>();*/List<String> arrayList = new ArrayList<String>(); //右边的泛型可不写!arrayList.add("wo"); //向集合存入元素 , 但是要和定义的类型一样!arrayList.add("ni");arrayList.add("ta");//ArrayList 底层是基于数组的System.out.println(arrayList.size()); //ArrayList.size 方法可以清楚的看到集合中元素的数量! //3for (int i = 0; i < arrayList.size(); i++) {System.out.println(arrayList.get(0)); //将下标为0的数组循环三次并打印出来!}System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2)); // ArrayList.get方法 可以获取到集合中的元素!//        System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2) + arrayList.get(3)); //一定会报错的!获取的元素不能超过集合中的元素数量!System.out.println("-----------------------------------");String remove = arrayList.remove(2);System.out.println(remove); // ArrayList.remove 删除元素! //ta//        System.out.println(arrayList.get(0) + arrayList.get(1) + arrayList.get(2)); // 会报错!因为下标为2的元素已经删除了!System.out.println(arrayList.size()); // 2  使用size方法,会得到集合中还有两个元素!!}
}

ArrayList.get : 获取集合中的元素
ArrayList.set : 替换集合中的元素
ArrayList.add : 给集合添加元素
ArrayList.remove : 删除集合中的元素
ArrayList.size   : 获取集合中元素的数量

迭代器(Iterator)
在 Java 中,迭代器(Iterator)是一种用于遍历集合(Collection)元素的接口。通过迭代器,可以依次访问集合中的每个元素,而无需了解集合内部的数据结构。使用迭代器可以实现对集合的遍历,并且在遍历的过程中可以进行删除操作,而不会出现并发修改异常。通常,使用迭代器的基本流程如下:1. 通过集合的 iterator() 方法获取迭代器对象。
2. 使用 hasNext() 方法判断是否还有下一个元素。
3. 使用 next() 方法获取下一个元素的值。
4. 在需要的时候可以使用 remove() 方法删除元素(可选操作)。需要注意的是,迭代器是通过集合的 iterator() 方法获取的,不同的集合类(如ArrayList、LinkedList、HashSet等)都实现了iterator()方法,因此可以使用迭代器对不同类型的集合进行遍历操作。

import java.util.ArrayList;
import java.util.Iterator;public class IteratorExample {public static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("A");list.add("B");list.add("C");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String element = iterator.next();System.out.println(element);}}
}

List集合特有方法


import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;public class ArrayList_list {public static void main(String[] args) {//list接口中独有的方法Collection<String> collection = new ArrayList<>();collection.add("qq01");collection.add("qq02");collection.add("qq03");//在Collenction接口中,是没有get方法的、//java多态机制  -- 编译看左边的  而左边是Collection接口,没有get方法,所以运行报错!!//如果需要使用get方法,可以将Collection强转为List即可!List list = (List) collection;
//        System.out.println(list.get(0)); // 这样就可以使用get方法了!list.add("qq123");
//        System.out.println(list.size()); // 4list.remove(2);
//        System.out.println(list.size()); //3list.set(1, "weixin");Iterator iterator = list.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}}/*** collection 接口只是提供集合基本的方法* 具体实现的话使用List ArratList ,需要重写List接口!** 1、List集合下都是有序的接口  根据存放顺序* 2、可以允许存放重复数据的,而set接口不允许!*/
}

List 的特点
  • 使用 List 时,我们要关注 List 接口的规范。List 接口允许我们添加重复的元素,即 List 内部的元素可以重复:
1List<String> list = new ArrayList<>();2list.add("apple");           // size=13list.add("pear");           // size=24list.add("apple");           // 允许重复添加元素,size=35System.out.println(list.size());                  // 结果为 3
  • List 还允许添加 null
1List<String> list = new ArrayList<>();2list.add("apple");         // size=13list.add(null);               // size=24list.add("pear");         // size=35String second = list.get(1);                  // null6System.out.println(second);            // 结果为 3

List集合的概念和特点1、list集合是有序的,可以精确的控制列表中每个元素的插入位置!可以通过证书索引访问元素,并搜索列表中的元素!!2、set集合是无序的,不允许存入重复的数据!List集合的特点
有序:存储和取出的元素顺序一致!
可重复:存储的元素可以重复!

创建 List

除了使用 ArrayListLinkedListJDK9 及其以后的版本中,我们还可以通过 List 接口提供的 of() 方法,根据给定元素快速创建 List

1List<Integer> list = List.of(1, 2, 3);

注意:但是 List.of() 方法不接受 null 值,如果传入 null,会抛出 NullPointerException 异常。


遍历List

1、for循环:和数组类型,我们要遍历一个 List,完全可以用 for 循环根据索引配合 get(int) 方法遍历:

List<String> list = List.of("apple", "pear", "banana");
for (int i = 0; i < list.size(); i++) {String s = list.get(i);System.out.println(s);
}

2、迭代器:Iterator 对象有两个方法:boolean hasNext() 判断是否有下一个元素,E next() 返回下一个元素。因此,使用 Iterator 遍历 List 代码如下

List<String> list = List.of("apple", "pear", "banana");
for (Iterator<String> it = list.iterator(); it.hasNext(); ) {String s = it.next();System.out.println(s);
}

3、加强版 for 循环:Javafor each 循环就可以帮我们使用 Iterator 遍历。把上面的代码再改写如下:

List<String> list = List.of("apple", "pear", "banana");
for (String s : list) {System.out.println(s);
}

练习:import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;public class Solution {public void myMethod() throws Exception{List<String> list = new ArrayList<>();list.add("apple");list.add("pear");list.add("banana");System.out.println("使用普通的for循环遍历:");for (int i=0; i<list.size(); i++) {String s = list.get(i);System.out.println(s);}System.out.println("使用迭代器Iterator遍历:");for (Iterator<String> it = list.iterator(); it.hasNext(); ) {String s = it.next();System.out.println(s);}System.out.println("使用增强版for循环:");for (String s : list) {System.out.println(s);}}
}

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

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

相关文章

一个获取正定矩阵的非常好的方法 (多元二次函数 ---> 正定矩阵) (done)

参考视频&#xff1a;https://www.bilibili.com/video/BV11T4y1S7YF/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 如下图&#xff0c;是一种非常直接的获取正定矩阵的方法 &#xff08;且这种方法一定会获得对称矩阵&#xff…

IDEA 2023.2 配置 JavaWeb 工程

目录 1 不使用 Maven 创建 JavaWeb 工程 1.1 新建一个工程 1.2 配置 Tomcat 1.3 配置模块 Web 2 使用 Maven 配置 JavaWeb 工程 2.1 新建一个 Maven 工程 2.2 配置 Tomcat &#x1f4a5;提示&#xff1a;IDEA 只有专业版才能配置 JavaWeb 工程&#xff0c;若是社区版&am…

☀️将大华摄像头画面接入Unity 【2】配置Unity接监控画面

一、前言 上一篇咱们将大华摄像头接入到电脑上了&#xff0c;接下来准备接入到unity画面。 接入到监控就涉及到各种视频流的格式rtsp、rtmp、m3u8。 Unity里有一些播放视频流的插件&#xff0c;主要的就是AVPro Video 和 UMP等&#xff0c;这次我用的是UMP 最好使用2.0.3版本…

从0到1的私域流量体系搭建,私域操盘手的底层认知升级

一、教程描述 本套私域操盘手教程&#xff0c;大小4.31G&#xff0c;共有12个文件。 二、教程目录 01第一课、私域能力必修&#xff1a;私域大神熟记于心的高阶私域体系.mp4 02第二课、私域IP打造&#xff1a;那些忍不住靠近的私域IP如何打造的.mp4 03第三课、朋友圈经济&…

论文阅读——SqueezeSAM

SqueezeSAM: User-Friendly Mobile Interactive Segmentation 比SAM更小&#xff0c;更快。 框架&#xff1a; 使用的U型结构 使用BatchNorm而不是LayerNorm节省计算&#xff1b; 对于用户点击和框&#xff0c;单独作为通道&#xff0c;前融合和后融合&#xff08;sam只有后融…

OpenGL学习——16.多光源

前情提要&#xff1a;本文代码源自Github上的学习文档“LearnOpenGL”&#xff0c;我仅在源码的基础上加上中文注释。本文章不以该学习文档做任何商业盈利活动&#xff0c;一切著作权归原作者所有&#xff0c;本文仅供学习交流&#xff0c;如有侵权&#xff0c;请联系我删除。L…

OAuth2.0 最简向导

本文是一篇关于OAuth2.0的启蒙教程&#xff0c;图文并茂&#xff0c;通俗易懂&#xff0c;力求用最简洁明了的方式向初学者解释OAuth2.0是什么。本文并不是冗杂难懂的长篇大论&#xff0c;一图胜千言&#xff0c;深入浅出OAuth2.0&#xff0c;知其然知其所以然。 参考文献 首…

快速上手Spring Boot整合,开发出优雅可靠的Web应用!

SpringBoot 1&#xff0c;SpringBoot简介1.1 SpringBoot快速入门1.1.1 开发步骤1.1.1.1 创建新模块1.1.1.2 创建 Controller1.1.1.3 启动服务器1.1.1.4 进行测试 1.1.2 对比1.1.3 官网构建工程1.1.3.1 进入SpringBoot官网1.1.3.2 选择依赖1.1.3.3 生成工程 1.1.4 SpringBoot工程…

JAVA工程师面试专题-JVM篇

目录 一、运行时数据区 1、说一下JVM的主要组成部分及其作用? 2、说一下 JVM 运行时数据区 ? 3、说一下堆栈的区别 4、成员变量、局部变量、类变量分别存储在什么地方? 5、类常量池、运行时常量池、字符串常量池有什么区别? 6、JVM为什么使用元空间替换永久代 二、…

代码随想录算法训练营29期|day57 任务以及具体安排

第九章 动态规划part14 1143.最长公共子序列 /*二维dp数组 */ class Solution {public int longestCommonSubsequence(String text1, String text2) {// char[] char1 text1.toCharArray();// char[] char2 text2.toCharArray();// 可以在一開始的時候就先把text1, text2 轉成…

week04day01(爬虫)

一. 爬虫 只爬取公开的信息&#xff0c;不能爬取未公开的后台数据 1.爬虫的合法性 法无禁止皆可为 -- 属于法律的灰色地带https://www.tencent.com/robots.txt -- 网站/robots.txt 可以查看禁止爬取的内容 2. URL Uniform Resource Locator 统一资源定位符https://www.…

ACL权限-访问控制列表

一、简介 ACL&#xff08;access control list&#xff09;访问控制列表&#xff0c;可以对单一的用户或者组设置对文件或目录的独立rwx权限。 二、文件系统是否支持ACL权限 ACL权限是传统的Unix-like操作系统权限的额外支持项目&#xff0c;要有文件系统的支持&#xff0c;目前…

Learn HTML in 1 hour

website address https://www.youtube.com/watch?vHD13eq_Pmp8 excerpt All right, what’s going on? everybody. It’s your Bro, hope you’re doing well, and in this video I’m going to help you started with html; so sit back, relax and enjoy the show. If y…

网络爬虫基础(上)

1. 爬虫的基本原理 爬虫就是在网页上爬行的蜘蛛&#xff0c;每爬到一个节点就能够访问该网页的信息&#xff0c;所以又称为网络蜘蛛&#xff1b; 网络爬虫就是自动化从网页上获取信息、提取信息和保存信息的过程&#xff1b; 2. URL的组成部分 URL全称为Uniform Resource L…

基于Mapbox展示GDAL处理的3D行政区划展示实践

目录 前言 一、Gdal数据处理 1、数据展示 2、Java数据转换 二、Mapbox可视化 1、定义Mapbox地图 2、地图初始化 3、创建地图 三、界面优化 1、区域颜色设置 2、高度自适应和边界区分 3、中文标注 总结 前言 最近有遇到一个需求&#xff0c;用户想在地图上把行政区划…

Android 9.0 禁用插入耳机时弹出的保护听力对话框

1.前言 在9.0的系统rom定制化开发中,在某些产品中会对耳机音量调节过高限制,在调高到最大音量的70%的时候,会弹出音量过高弹出警告,所以产品 开发的需要要求去掉这个音量弹窗警告功能,接下来就来具体实现这个功能 2.禁用插入耳机时弹出的保护听力对话框的核心类 framework…

浅谈ORM框架

文章目录 一、什么是ORM框架&#xff1f;二、常见的ORM框架(持久层框架)2.0 什么是持久化2.1 Hibernate2.1.1、Hibernate的使用步骤 2.2 mybatis2.3 mybatis plus2.4 jpa springdata2.5 jfinal 三、ORM框架的优缺点&#xff1f;3.1 优点3.1.1、减少代码的重复量&#xff0c;提高…

Android 基础技术——Framework

笔者希望做一个系列&#xff0c;整理 Android 基础技术&#xff0c;本章是关于 Framework 简述 Android 系统启动流程 当按电源键触发开机&#xff0c;首先会从 ROM 中预定义的地方加载引导程序 BootLoader 到 RAM 中&#xff0c;并执行 BootLoader 程序启动 Linux Kernel&…

使用Flex布局在HTML中实现双行夹批效果

古代小说中经常有评点和批注&#xff0c;为了区别正文和批注&#xff0c;一般将批注排版成双行夹批的形式。我们知道&#xff0c;在Word中只需要先选择批注文字&#xff0c;然后通过“开始”菜单“段落”面板上字符缩放工具组里的“双行合一”命令&#xff0c;就可以很容易实现…

Android13 针对low memory killer内存调优

引入概念 在旧版本的安卓系统中&#xff0c;当触发lmk&#xff08;low memory killer&#xff09;的时候一般认为就是内存不足导致&#xff0c;但是随着安卓版本的增加lmk的判断标准已经不仅仅是内存剩余大小&#xff0c;io&#xff0c;cpu同样会做评判&#xff0c;从而保证设备…