当前位置: 首页 > 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;位置…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...