Java可重复单列集合

Collection集合

Java Collection 是 java.util包中的一个接口,它用于将多个对象表示为单个单元。

Collection接口在Java中扮演着非常重要的角色,它提供了一种方式来存储和操作一组对象。以下是一些关于Java Collection的重要信息:

  1. 接口定义:Collection接口定义了一组方法,这些方法允许对集合进行增加、删除、查找和遍历等操作。
  2. 主要子接口:Collection接口有几个主要的子接口,包括List、Set和Queue,它们分别代表有序列表、无序集合和队列。
  3. 基本操作:Collection接口提供的基本操作包括add()(添加元素)、remove()(移除元素)、clear()(清除集合)、size()(获取集合大小)和contains()(检查集合是否包含特定元素)等。
  4. 与Map的区别:虽然Map接口也是Java集合框架的一部分,但它不是Collection接口的子接口。Map是双列集合的顶级接口,用来存储键值对,而Collection则是单列集合的顶级接口。
  5. 与数组的区别:数组和集合都是用于存储数据的容器,但数组是一系列有序数据的集合,而集合提供了更多的操作和方法来处理数据。
  6. 使用场景:在Java开发中,使用集合是非常常见的任务。无论是需要存储一组对象还是需要对这些对象进行排序、搜索或其他操作,集合都是一个强大的工具。

Collection集合常用方法  

方法名说明
boolean add(E e)添加元素
boolean remove(Object o)从集合中移除指定的元素
boolean removeIf(Object o)根据条件进行移除
void clear()清空集合中的元素
boolean contains(Object o)判断集合中是否存在指定的元素
boolean isEmpty()判断集合是否为空
int size()集合的长度,也就是集合中元素的个数

Collection集合的遍历 

Java Collection集合的遍历有以下几种方式:

  • 使用迭代器(Iterator)进行遍历:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);}}
}
  • 使用增强for循环进行遍历:
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");for (String fruit : list) {System.out.println(fruit);}}
}
  • 使用Java 8的Stream API进行遍历:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");list.stream().forEach(System.out::println);}
}

 List集合

List是Java中的一种数据结构,它是一个有序且允许重复元素的集合

List接口在Java的集合框架中扮演着重要的角色。它继承自Collection接口,并提供了对元素进行插入、删除、修改和查询等操作的方法。List的特点包括:

  • 有序性:List中的每个元素都有一个索引,可以通过索引来访问或操作元素。第一个元素的索引是0,第二个是1,以此类推。
  • 可重复性:与Set不同,List允许存储重复的元素。
  • 常用实现类:List接口有多种实现类,如ArrayList和LinkedList。ArrayList是基于动态数组实现的,适合随机访问元素;而LinkedList则是基于链表实现的,适合频繁的插入和删除操作。
  • 常用方法:List接口提供了添加(add)、删除(remove)、获取(get)、设置(set)、遍历等方法,这些方法使得List成为一个非常灵活和强大的数据结构。
方法名描述
void add(int index,E element)在此集合中的指定位置插入指定的元素
E remove(int index)删除指定索引处的元素,返回被删除的元素
E set(int index,E element)修改指定索引处的元素,返回被修改的元素
E get(int index)返回指定索引处的元素

代码实现:

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {// 创建一个List对象List<String> list = new ArrayList<>();// 添加元素到List中list.add("apple");list.add("banana");list.add("orange");// 获取List的大小int size = list.size();System.out.println("List的大小为:" + size);// 遍历List并输出元素for (String fruit : list) {System.out.println(fruit);}// 删除List中的某个元素list.remove(1);System.out.println("删除索引为1的元素后,List的内容为:" + list);// 修改List中的某个元素list.set(0, "grape");System.out.println("将索引为0的元素修改为'grape'后,List的内容为:" + list);}
}

 List集合的遍历

  • 使用迭代器(Iterator)进行遍历:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");Iterator<String> iterator = list.iterator();while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);}}
}
  • 使用增强for循环进行遍历:
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");for (String fruit : list) {System.out.println(fruit);}}
}
  • 使用Java 8的Stream API进行遍历:
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");list.stream().forEach(System.out::println);}
}
  • 使用普通for循环遍历
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");for (int i = 0; i < list.size(); i++) {String fruit = list.get(i);System.out.println(fruit);}}
}
  • 使用列表迭代器遍历
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;public class Main {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("apple");list.add("banana");list.add("orange");ListIterator<String> iterator = list.listIterator();while (iterator.hasNext()) {String fruit = iterator.next();System.out.println(fruit);}}
}

ArrayList

Java ArrayList是Java集合框架(Java Collection Framework)中的一个重要组件,它提供了对列表(List)数据结构的实现。以下是有关Java ArrayList的一些关键信息:

类定义ArrayList 是一个可调整大小的数组实现,它允许我们动态地添加和删除元素。

性能特点

  • ArrayList 提供了快速的随机访问能力,因为它是基于索引的数据结构。
  • 在列表的中间插入或删除元素时,可能需要移动大量元素,因此这些操作可能比在列表末尾添加或删除元素的开销要大。

常用操作

  • add(E e): 在列表的末尾添加一个元素。
  • add(int index, E element): 在列表的指定位置插入一个元素。
  • remove(int index): 移除列表中指定位置的元素,并返回该元素。
  • get(int index): 返回列表中指定位置的元素。
  • size(): 返回列表中的元素数量。
  • isEmpty(): 检查列表是否为空。
  • clear(): 移除列表中的所有元素。
  • indexOf(Object o): 返回此列表中首次出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  • lastIndexOf(Object o): 返回此列表中最后出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  • contains(Object o): 如果列表包含指定的元素,则返回 true,否则返回 false。

初始化

  • 可以通过无参构造函数创建一个空的ArrayList:ArrayList<String> list = new ArrayList<>();
  • 也可以通过传入一个初始容量来创建ArrayList:ArrayList<String> list = new ArrayList<>(initialCapacity);
  • 还可以将另一个集合作为参数传递给ArrayList的构造函数来初始化它:ArrayList<String> list = new ArrayList<>(anotherCollection);

泛型ArrayList 可以存储任何类型的对象,包括基本类型包装类、字符串、自定义对象等。

线程安全ArrayList 不是线程安全的,如果在多线程环境中需要使用,可以考虑使用Vector或者Collections.synchronizedList()来包装ArrayList

应用场景:当需要频繁访问列表中的元素时,ArrayList 是一个很好的选择,特别是读操作远多于写操作的情况。

示例代码

import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) {List<String> animals = new ArrayList<>();animals.add("Cat");animals.add("Dog");animals.add("Horse");System.out.println("Animals in the list: " + animals);String firstAnimal = animals.get(0);System.out.println("First animal: " + firstAnimal);animals.remove(1);System.out.println("After removing an animal: " + animals);animals.set(0, "Fish");System.out.println("After replacing an animal: " + animals);System.out.println("Is the list empty? " + animals.isEmpty());System.out.println("Size of the list: " + animals.size());System.out.println("Index of 'Horse': " + animals.indexOf("Horse"));System.out.println("Last index of 'Horse': " + animals.lastIndexOf("Horse"));System.out.println("Does the list contain 'Dog'? " + animals.contains("Dog"));animals.clear();System.out.println("List after clearing: " + animals);}
}

以上代码展示了如何使用ArrayList的基本操作,包括添加、获取、删除、替换、检查是否为空、获取大小、查找索引以及清空列表。

LinkedList

Java LinkedList 是 Java 集合框架中的一种数据结构,它实现了 List 接口。LinkedList 是一个双向链表,可以高效地进行元素的插入和删除操作。

以下是一些常用的 LinkedList 方法:

  1. add(E e): 在列表末尾添加一个元素。
  2. add(int index, E element): 在指定位置插入一个元素。
  3. remove(int index): 移除列表中指定位置的元素。
  4. get(int index): 返回列表中指定位置的元素。
  5. size(): 返回列表中的元素数量。
  6. isEmpty(): 检查列表是否为空。
  7. clear(): 移除列表中的所有元素。
  8. indexOf(Object o): 返回列表中首次出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  9. lastIndexOf(Object o): 返回列表中最后出现的指定元素的索引,或如果列表不包含元素,则返回 -1。
  10. contains(Object o): 如果列表包含指定的元素,则返回 true,否则返回 false。

以下是一个简单的示例,演示如何使用 LinkedList:

import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();// 添加元素list.add("Apple");list.add("Banana");list.add("Cherry");// 获取元素String firstElement = list.get(0);System.out.println("第一个元素: " + firstElement);// 删除元素list.remove(1);// 遍历列表for (String item : list) {System.out.println(item);}}
}

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

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

相关文章

C++string类(个人笔记)

string类 1.认识string的接口以及熟练使用常用接口1.1string类对象的常见构造1.2string类对象的容量操作1.3string类对象的访问及遍历操作1.4string类对象的修改操作 2.vs 和g下string结构的说明3.string类运用的笔试题4.string类的模拟实现 1.认识string的接口以及熟练使用常用…

数据链路层(上):以太网、二层交换机和网络风暴

目录 数据链路层知识概览 数据链路层设备 1、二层交换机 2、拓展&#xff1a;二层交换机与三层交换机有啥区别&#xff1f; 3、广播风暴 4、交换机以太网接口的工作模式 数据链路层的功能 数据链路层--以太网 1、以太网是什么&#xff1f; 2、以太网地址 数据链路层知…

bugku-web-安慰奖

提示备份 开始扫后台 得到备份文件index.php.bak 得到php代码 <?phpheader("Content-Type: text/html;charsetutf-8"); error_reporting(0); echo "<!-- YmFja3Vwcw -->"; class ctf {protected $username hack;protected $cmd NULL;public f…

【python】 numpy 中常用随机数函数的使用和记忆(不易混淆)

文章目录 概述固定分布随机数&#xff08;只需指定形状的随机函数&#xff09;np.random.randomnp.random.randnp.random.randn 随机范围随机数&#xff08;需要指定范围和形状的随机函数&#xff09;np.random.randintnp.random.uniformnp.random.normalnp.random.poisson 代码…

数据分析案例(三):基于RFM分析的客户分群

实验2 基于RFM分析的客户分群 Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢…

PostgreSQL入门到实战-第二十九弹

PostgreSQL入门到实战 PostgreSQL中数据分组操作(四)官网地址PostgreSQL概述PostgreSQL中CUBE命令理论PostgreSQL中CUBE命令实战更新计划 PostgreSQL中数据分组操作(四) 如何使用PostgreSQL CUBE生成多个分组集 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不…

联为机器视觉的课程笔记

1.像素 2592x1944 相当于 500万像素 2.图像 本质是二位数组&#xff08;内存里面是一维数组&#xff09; 图像越大 分别率越大 3.特征对比相对大的 方便寻找大的 灰度图片进行处理 图像->区域->图像 函数 read_image() 从磁盘读取文件 get_image_size() 获取图片大小…

解析ShardingSphere:强大的分布式数据库中间件

在现代软件开发中&#xff0c;随着数据量的爆炸性增长和系统复杂度的持续上升&#xff0c;传统的单体数据库架构已经难以应对日益增长的性能与扩展性需求。针对这一挑战&#xff0c;ShardingSphere应运而生&#xff0c;它提供了一套全面的解决方案&#xff0c;帮助开发者构建更…

Offer必备算法25_01背包_四道力扣题详解(由易到难)

目录 ①牛客DP41 【模板】01背包 问题一解析 问题二解析 解析代码 滚动数组优化代码 ②力扣416. 分割等和子集 问题解析 解析代码 滚动数组优化代码 ③力扣494. 目标和 问题解析 解析代码 滚动数组优化代码 ④力扣1049. 最后一块石头的重量 II 问题解析 解析代…

音视频学习—音视频理论基础(2)

音视频学习—音视频理论基础&#xff08;2&#xff09; 1、音频的基本概念2、声音的三要素3、声音的本质4、奈奎斯特采样定律5、采样和采样率6、采样数和采样位数7、量化8、比特率&#xff08;码率&#xff09;9、响度和强度10、编码11、音频帧12、音频文件大小的计算总结 1、音…

【GEE实践应用】按照字段提取想要的研究区域

有的时候&#xff0c;我们在GEE中加载研究区域时&#xff0c;我们现有的矢量数据可能不止自己想要的研究区域的范围&#xff0c;这个时候&#xff0c;为了避免在ArcGIS中重新导出打包上传等操作&#xff0c;我们可以在GEE中按照字段进行选择我们想要的研究区域。下面是操作实例…

Leetcode二十三题:合并K个升序链表【22/1000 python】

“合并K个升序链表”&#xff0c;这是一道中等难度的题目&#xff0c;经常出现在编程面试中。以下是该问题的详细描述、解题步骤、不同算法的比较、代码示例及其分析。 问题描述 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中…

IOT系统上位机从OPC 服务器采集,时间戳的问题哪些现象?

上位机从OPC服务器采集数据时&#xff0c;时间戳问题可能出现以下现象&#xff1a; 1. 时间偏差&#xff1a; - 时区不一致&#xff1a;OPC服务器可能使用UTC&#xff08;协调世界时&#xff09;作为基准&#xff0c;而上位机可能使用本地时区。如果不进行适当转换&#xff0c…

【重学C语言】七、一维数组

【重学C语言】七、一维数组 一维数组基本语法数组长度访问数组中的数据数组下标创建数组并初始化方法一:在声明时初始化方法二:部分初始化方法三:动态初始化方法四:指定大小的初始化用字符串初始化字符数组基本示例数字类数组的常用操作字符类数组常用操作注意事项排序算法…

浏览器密码框明文密文兼容edge的问题

在网页中注册会员的时候&#xff0c;经常需要输入用户名&#xff08;账号&#xff09;和密码&#xff0c;在输入密码的时候&#xff0c;为了防止用户输错密码&#xff0c;经常会给密码框加一个小功能&#xff0c;就是点击密码框右侧闭着的小眼睛&#xff0c;可以让密文变成明文…

代码随想录算法训练营DAY23|C++二叉树Part.9|669.修建二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树

文章目录 669.修建二叉搜索树递归法思路伪代码CPP代码 108.将有序数组转换为二叉搜索树递归伪代码CPP代码 538.把二叉搜索树转换为累加树思路递归伪代码递归CPP代码迭代法 669.修建二叉搜索树 力扣题目链接 文章讲解&#xff1a;669.修建二叉搜索树 视频讲解&#xff1a;你修剪…

【教学类-51-01】20240411动物皮毛图片的彩色打印PDF制作(一页两张图片,2个表格)

作品展示 背景需求&#xff1a; 为了便于快速做出A4两份图片的效果&#xff0c;设计以下代码&#xff0c;进行图片的PDF合成打印 代码参考&#xff1a; 【教学类-50-06】20240410“数一数”4类星号图片制作PDF学具-CSDN博客文章浏览阅读531次&#xff0c;点赞8次&#xff0c;收…

医院预约系统微信小程序APP前后端

医院预约系统具体功能介绍&#xff1a;展示信息、可以注册和登录&#xff0c; 预约&#xff08;包含各个科室的预约&#xff0c;可以预约每个各个医生&#xff09;&#xff0c;就诊引导包含预约的具体信息&#xff0c;包含就诊时间、就诊科室、就诊医生以及就诊人信息、和支付状…

基于”Python+”多技术融合在蒸散发与植被总初级生产力估算中的应用

熟悉蒸散发ET及其组分&#xff08;植被蒸腾Ec、土壤蒸发Es、冠层截留Ei&#xff09;、植被总初级生产力GPP的概念和碳水耦合的基本原理&#xff1b;掌握利用Python与ArcGIS工具进行课程相关的操作&#xff1b;熟练掌握国际上流行的Penman-Monteith模型&#xff0c;并能够应用该…

pytorch中通道数不一样怎么办?

在深度学习中&#xff0c;1x1卷积&#xff08;有时也称为点卷积&#xff09;是一种有效的技术&#xff0c;常用于改变卷积神经网络中特征图的通道数。这种方法可以在不改变特征图空间维度&#xff08;高度和宽度&#xff09;的情况下&#xff0c;调整其深度&#xff08;通道数&…