当前位置: 首页 > news >正文

集合: Collection的成员方法和相关实现类

   Collection:
        - List(有序【指的是存储和取出的顺序是一致的】且可以发生重复,且有索引的概念)
            - ArrayList: 底层数据结构是数组,查询快,增删慢,线程不安全的,效率高。
            - Vector:底层数据结构是数组,查询快,增删慢,线程安全的,效率低
               【即便Vector是线程安全的,今后也不用,我们会将不安全的ArrayList变成安全的】
            - LinkedList:底层数据结构是双链表,增删快,查询慢,线程不安全的,效率高。
        - Set(元素唯一且无序)
   Collection成员方法:
        boolean add(E e)  在集合添加一个元素
        boolean remove(Object o)  从集合删除一个元素,如果有重复,删除左边第一个
        void clear()   清空集合中所有元素
        boolean contains(Object o)   判断集合中是否包含某个元素
        boolean isEmpty()               判断集合是否为空
        int size()                               获取集合中元素个数
参考使用:

public class CollectionDemo1 {public static void main(String[] args) {Collection c1 = new ArrayList();System.out.println("c1: " + c1); //重写的toString()方法来自AbstractCollection类中System.out.println("-----------------------------");//boolean add(Object e) 向集合中添加元素c1.add(100); // 涉及到自动装箱 将基本数据类型的值包装成对应的包装类类型c1.add("hello");c1.add(true);c1.add(11.23);c1.add(100);System.out.println("c1: " + c1);//boolean remove(Object o) 从集合中删除某个元素c1.remove(100); //若删除的元素有重复的存在,只会删除最左边的第一个相同的元素System.out.println("c1: " + c1);//void clear() 清空集合中所有的元素c1.clear();System.out.println("c1: " + c1);//boolean contains(Object o) 判断集合中是否包含某个元素System.out.println(c1.contains("helldasdao"));//boolean isEmpty() 判断集合中是否有元素存在System.out.println(c1.isEmpty());//int size() 获取集合中的元素个数System.out.println(c1.size());}
}

List接口中特有的成员方法:(因为List集合有索引的概念,针对索引的操作多了一些方法)
        void add(int index,E element)  指定位置索引添加元素到集合中
        E remove(int index)       指定索引删除某个元素,返回被删除的元素
        E get(int index)               根据索引获取集合中的元素对象
        E set(int index,E element)  指定位置索引,修改元素,返回原本位置上的元素对象
        ListIterator listIterator()    List集合专有的迭代器

参考使用:

注意: //一个迭代器对象只有一个游标可以移动
           //ListIterator listIterator() List集合专有的迭代器
          //listIterator()通过观察子类源码发现,底层是返回了一个ListItr类的对象
          //ListItr类是继承自Itr类,也拥有hasNext()和next()方法

           //ListItr类中有hasPrevious()和previous()方法
           //hasPrevious(): 判断前一个位置上是否有元素
           //previous(): 将游标向前移动一位,并获取位置上的元素

public class ListDemo2 {public static void main(String[] args) {//创建一个List集合对象List li1 = new ArrayList();//创建元素对象Student s1 = new Student("aaa", 12);Student s2 = new Student("bbb", 13);Student s3 = new Student("ccc", 14);Student s4 = new Student("fff", 15);//将元素添加到List集合中li1.add(s1);li1.add(s2);li1.add(s3);li1.add(s4);System.out.println("li1: "+li1);System.out.println("=======================================");//void add(int index,Object element) 指定位置索引添加元素到集合中Student s5 = new Student("qqq", 18);//需求:将s5添加在s2和s3之间li1.add(2,s5);Student s6 = new Student("zzz", 20);li1.add(5,s6); // 紧跟着最后一个元素后面的索引可以赋值,其他的索引不行System.out.println("li1: "+li1);
//        System.out.println("=======================================");//E remove(int index) 指定索引删除某个元素,返回被删除的元素
//        Object o = li1.remove(2);
//        System.out.println("li1: "+li1);
//        System.out.println("o: "+o);System.out.println("=======================================");//Object get(int index) 根据索引获取集合中的元素对象Object o = li1.get(2);System.out.println("li1: "+li1);System.out.println(o);System.out.println("=======================================");//Object set(int index,Object element) 指定位置索引,修改元素,返回原本位置上的元素对象Student s7 = new Student("www", 31);Object o2 = li1.set(2, s7);System.out.println("li1: "+li1);System.out.println("o2: "+o2);System.out.println("=======================================");//一个迭代器对象只有一个游标可以移动//ListIterator listIterator() List集合专有的迭代器//listIterator()通过观察子类源码发现,底层是返回了一个ListItr类的对象//ListItr类是继承自Itr类,也拥有hasNext()和next()方法ListIterator listIterator = li1.listIterator();while (listIterator.hasNext()){Object o1 = listIterator.next();System.out.println(o1);}System.out.println("__________________________________________");//ListItr类中有hasPrevious()和previous()方法//hasPrevious(): 判断前一个位置上是否有元素//previous(): 将游标向前移动一位,并获取位置上的元素//要想倒着遍历,必选先将迭代器的游标移动到最后一位。while (listIterator.hasPrevious()){Object o3 = listIterator.previous();System.out.println(o3);}}
}

 ArrayList:(包含了List的一些用法)

public class ArrayListTest2 {public static void main(String[] args) {ArrayList list1 = new ArrayList();Student s1 = new Student("小黑", 18);Student s2 = new Student("小白", 17);Student s3 = new Student("小花", 18);Student s4 = new Student("小红", 19);Student s5 = new Student("小黑", 18);list1.add(s1);list1.add(s2);list1.add(s3);list1.add(s4);list1.add(s5);System.out.println("list1: " + list1);

Vector类中的特有功能:
    public void addElement(E obj)  从效果上来看和调用add方法一样,都是在集合末尾处添加元素
    public E elementAt(int index)   根据索引获取元素 , 从效果上来看和调用get方法一样
    public Enumeration elements()  获取一个存储所有集合元素的容器,类似于迭代器

Vector中Enumeration elements()参考用法如下:

  //public Enumeration elements() 获取一个存储所有集合元素的容器,类似于迭代器// 从效果上来看和使用迭代器一样,都是先判断下一个位置是否有元素,然后再获取,将来就使用迭代器来替代它Enumeration elements = vector.elements();while (elements.hasMoreElements()){Object o = elements.nextElement();System.out.println(o);

  LinkedList类特有功能:
        public void addFirst(E e)及addLast(E e)
        public E getFirst()及getLast()
        public E removeFirst()及public E removeLast()

参考用法:

public class LinkedListDemo1 {public static void main(String[] args) {LinkedList list1 = new LinkedList();list1.add("hello");list1.add("world");list1.add("java");list1.add("hadoop");list1.add("hello");Iterator iterator = list1.iterator();while (iterator.hasNext()) {System.out.println(iterator.next());}System.out.println("===================================");//public void addFirst(E e)及addLast(E e)list1.addFirst("小美");list1.addLast("小强"); // add()System.out.println("list1:" + list1);System.out.println("===================================");//public E getFirst()及getLast()System.out.println(list1.getFirst());System.out.println(list1.getLast());System.out.println("===================================");//public E removeFirst()及public E removeLast()System.out.println(list1.removeFirst());System.out.println(list1.removeLast());System.out.println("list1:" + list1);}
}


 

相关文章:

集合: Collection的成员方法和相关实现类

Collection: - List(有序【指的是存储和取出的顺序是一致的】且可以发生重复,且有索引的概念) - ArrayList: 底层数据结构是数组,查询快,增删慢,线程不安全的,效率高。 - …...

过滤器与监听器:深入了解 Java Web 开发中的核心概念

在 Java Web 开发中,过滤器(Filter)和监听器(Listener)是两个重要的组件,它们帮助开发者在请求处理的各个阶段进行预处理和后处理。这篇博客将深入探讨这两个概念,并展示它们如何在实际应用中发…...

【Linux学习】动静态库从原理到制作

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 🍑动静态库🐟动静态库的制作与使用🚀生成静态库🔒生成动态库 🦌动态库的查…...

WPF篇(10)-Label标签+TextBlock文字块+TextBox文本框+RichTextBox富文本框

Label标签 Label控件继承于ContentControl控件,它是一个文本标签,如果您想修改它的标签内容,请设置Content属性。我们曾提过ContentControl的Content属性是object类型,意味着Label的Content也是可以设置为任意的引用类型的。 案…...

JavaFX对话框控件-ChoiceDialog

JavaFX对话框控件-ChoiceDialog 常用属性titlecontentTextinitOwnergraphicheaderTextdefaultValuechoicesdialogPane 常用事件显示事件setOnShowing显示事件setOnShown弹框按钮点击 综合案例自定义下拉框内容 与Alert大部分功能类似按钮不可以自定义多一个下拉框 常用属性 …...

一文了解BTC中的二层协议中Nervos network,CKB,RGB++,UTXO stack 之间的关系

注:该内容不构成投资建议,有些内容摘抄其他地方,如侵权,请联系删除。 Nervos network Nervos Network 是一个开源的区块链生态项目,该项目提供一套解决方案来应对区块链扩展性和互操作性的问题。 Nervos Network 成立…...

Oracle(47)如何创建和使用集合?

在PL/SQL中,集合(Collection)是一种复合数据类型,用于存储一组相关的数据项。集合主要有三种类型:关联数组(Associative Arrays)、嵌套表(Nested Tables)和可变数组&…...

SpringIOC和SpringAOC

lombok插件 XML<!-- 加载资源文件 --><context:property-placeholder location"classpath:jdbc.properties"></context:property-placeholder><!-- 注入数据源 --><bean id"dataSource" class"com.mchange.v2.c3p0.ComboP…...

static关键字详解

文章目录 static使用示例static底层原理静态初始化顺序静态与线程安全 static static是Java中的一个关键字&#xff0c;用于定义类级别的成员&#xff0c;类级别的成员是指那些属于整个类&#xff0c;而不是特定对象实例的成员。在Java中&#xff0c;类级别的成员包括静态变量…...

使用 Java RestClient 与 Elasticsearch 进行索引管理的示例

文章目录 准备工作测试连接创建索引查询索引是否存在删除索引总结 在这篇博客中&#xff0c;我将和大家分享如何使用 Java RestClient 与 Elasticsearch 进行简单的索引管理操作。如果你在开发过程中需要对海量数据进行高效搜索和分析&#xff0c;Elasticsearch 可能是个不错的…...

编程-设计模式 10:外观模式

设计模式 10&#xff1a;外观模式 定义与目的 定义&#xff1a;外观模式&#xff08;Facade Pattern&#xff09;提供了一个统一的接口&#xff0c;用来访问子系统中的一群接口。它定义了一个高层接口&#xff0c;让子系统更容易使用。目的&#xff1a;简化复杂的子系统的使用…...

非范型ArrayList和泛型List<T>

ArrayList 是 C# 中的一个非泛型集合类&#xff0c;它属于 System.Collections 命名空间。它提供了动态数组的功能&#xff0c;允许你在运行时添加、删除和访问元素。然而&#xff0c;需要注意的是&#xff0c;ArrayList 并不是类型安全的&#xff0c;因为你可以向其中添加任何…...

魔众文库系统v7.0.0版本推荐店铺功能,管理菜单逻辑优化

推荐店铺功能&#xff0c;管理菜单逻辑优化 [新功能] RandomImageProvider 逻辑升级重构&#xff0c;支持更丰富的随机图片生成 [新功能] 资源篮订单参数字段 [新功能] 首页推荐店铺功能&#xff0c;需要在后台 文库系统 → 文库店铺 开启推荐 [系统优化] Grid 快捷编辑请求…...

03、流程控制语句

01、位运算符 一、位运算符:是针对二进制数据(补码)的运算。(0看成false&#xff0c;1看成true) &:按位与——求出两个数字对应的二进制&#xff0c;有0则0 | :按位或——求出两个数字对应的二进制&#xff0c;有1则1 ^ :按位异或 ——求出两个数字对应的二进制&#xff0c…...

[Android] [解决]Bottom Navigation Views Activity工程带来的fragment底部遮盖的问题

创建了Bottom Navigation Views Activity之后&#xff0c;在fragment_home.xml&#xff0c;加了一个RecyclerView&#xff0c; 后来添加了item之后发现底部会被盖住一部分。 解决&#xff1a;在layout里面加两句&#xff1a; android:paddingBottom"?attr/actionBarSize&…...

Armv8/Armv9架构中的原子性

B2.2 Arm 架构中的原子性 原子性是内存访问的一个特性,描述为原子访问。Arm 架构描述涉及两种类型的原子性:单次复制原子性和多次复制原子性。在 Arm 架构中,内存访问的原子性要求取决于内存类型,以及访问是显式的还是隐式的。有关更多信息,请参见: 单次复制原子性的要求…...

读零信任网络:在不可信网络中构建安全系统15协议和过滤

1. 协议 1.1. IKE/IPSec 1.1.1. 因特网密钥交换协议&#xff08;Internet Key Exchange,IKE&#xff09;用于执行IPSec认证和密钥交换 1.1.1.1. 通常以后台守护进程的方式实现&#xff0c;使用预共享密钥或X.509证书来认证对端并创建一个安全会话 1.1.2. IKEv1与IKEv2 1.1.2.1…...

C语言学习笔记 Day11(指针--中2)

Day11 内容梳理&#xff1a; 目录 Chapter 7 指针 7.6 指针 & 函数 &#xff08;1&#xff09;形参改变实参的值 &#xff08;2&#xff09;字符数组作为函数参数 1&#xff09;合并字符串 2&#xff09;删掉字符串中空格 &#xff08;3&#xff09;指针作为函数返…...

Golang 并发编程

Golang 并发编程 Goroutine 什么是协程 创建 Goroutine 主 goroutine &#xff08;main函数&#xff09;退出后&#xff0c;其它的工作 goroutine 也会自动退出 package mainimport ("fmt""time" )func myFunc() {i : 0for {ifmt.Println("func: …...

【数据结构详解】——选择排序(动图详解)

目录 &#x1f552; 1. 直接选择排序&#x1f552; 2. 堆排序 &#x1f552; 1. 直接选择排序 &#x1f4a1; 算法思想&#xff1a;第一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始&#xff08;末尾&#xff09;位置…...

UOS系统下WPS卸载不干净?手把手教你用命令行精准清理(附dpkg/apt组合拳)

UOS系统下WPS卸载不干净&#xff1f;手把手教你用命令行精准清理 在UOS系统日常使用中&#xff0c;WPS Office作为常用办公软件&#xff0c;有时因版本更新或功能调整需要彻底卸载。但不少用户发现&#xff0c;通过图形界面或简单命令卸载后&#xff0c;系统中仍残留配置文件、…...

半导体元件(二极管/三极管/MOS管/IC)损坏诊断全解

半导体元件&#xff08;二极管、三极管、MOS 管、集成电路&#xff09;是 PCB 的核心功能单元&#xff0c;对过压、过流、ESD、高温极度敏感&#xff0c;损坏后直接导致电路功能失效、短路烧板。很多工程师维修时盲目更换芯片&#xff0c;不仅成本高&#xff0c;还易误判。​一…...

为什么92%的团队用DeepSeek生成方案仍需人工重写?揭秘缺失的2个元认知层与1套校验协议

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;为什么92%的团队用DeepSeek生成方案仍需人工重写&#xff1f;揭秘缺失的2个元认知层与1套校验协议 当团队将DeepSeek-R1或DeepSeek-VL模型用于技术方案生成时&#xff0c;表面看响应迅速、逻辑连贯&…...

广州因特智能:AI视觉软硬结合,打破半导体检测装备“卡脖子”困境

【导语&#xff1a;广州因特智能科技孵化于西安电子科技大学广州研究院&#xff0c;专注用AI视觉技术解决工业场景的“卡脖子”检测难题&#xff0c;为半导体、光通信、新能源三大领域提供高端检测装备。】校地合作孵化&#xff0c;构建完整能力体系广州因特智能科技由西安电子…...

Adobe-GenP 3.0:轻松激活Adobe全家桶的完整指南

Adobe-GenP 3.0&#xff1a;轻松激活Adobe全家桶的完整指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP 3.0是一款专为Adobe Creative Cloud系列软件…...

php有什么版本,php语言有几个版本

php有什么版本,php语言有几个版本PHP的大版本主要分四支&#xff1a;PHP4/PHP5/PHP6/PHP7 其中&#xff0c;PHP4由于太古老、对OO支持不力已基本被淘汰&#xff0c;请无视PHP4。 PHP6由于基本没有生产线上的应用&#xff0c;还基本只是一款概念产品&#xff0c;很多功能已在PHP…...

总线式智能提示灯系统设计:从恒流驱动到模块化架构

1. 项目概述&#xff1a;从传统到智能的剧场提示灯系统革新在剧场、演播室或者大型活动现场的后台&#xff0c;如果你待过&#xff0c;一定对那套“红灯停&#xff0c;绿灯行”的提示灯系统不陌生。导演或舞台监督通过对讲机喊“Standby”&#xff08;准备&#xff09;&#xf…...

ArduPilot飞行模式实战:从代码角度看Stabilize、Acro、Loiter模式如何切换(附避坑指南)

ArduPilot飞行模式深度解析&#xff1a;从状态机到实战避坑指南 在开源飞控领域&#xff0c;ArduPilot以其强大的飞行模式系统著称。不同于普通用户只需了解模式功能&#xff0c;开发者更需要掌握模式切换的底层机制——这直接关系到飞行安全与二次开发效率。本文将带您深入Sta…...

DIY智能USB充电器:基于电流检测与双稳态继电器的零功耗节能方案

1. 项目概述&#xff1a;打造一款智能、节能的USB手机充电器作为一名电子爱好者&#xff0c;我经常折腾各种电源项目。市面上很多手机充电器&#xff0c;包括一些原装货&#xff0c;都存在一个通病&#xff1a;手机充满电后&#xff0c;充电器依然插在插座上&#xff0c;内部电…...

Claude Code + LM Studio + CC-Switch 本地自动化编程部署指南

Claude Code LM Studio CC-Switch 本地自动化编程部署指南 本指南汇总了在 Windows 本地环境下&#xff0c;使用 Claude Code 配合 LM Studio 本地模型、CC-Switch 代理进行自动化编程开发的完整配置方案。 目录 硬件与模型选型LM Studio 本地模型部署CC-Switch 代理配置Cla…...