Java集合-Collections与Arrays

  1. Collections与Arrays

集合框架中的工具类:特点:该工具类中的方法都是静态的。

Collections:常见方法:

  1. 对list进行二分查找:

前提该集合一定要有序。

int binarySearch(list,key);

//必须根据元素自然顺序对列表进行升级排序

//要求list 集合中的元素都是Comparable 的子类。

int binarySearch(list,key,Comparator);

2,对list集合进行排序。

sort(list);

//对list进行排序,其实使用的事list容器中的对象的compareTo方法

sort(list,comaprator);

//按照指定比较器进行排序

3,对集合取最大值或者最小值。

max(Collection)

max(Collection,comparator)

min(Collection)

min(Collection,comparator)
4,对list集合进行反转。

reverse(list);

5,对比较方式进行强行逆转。

Comparator reverseOrder();

Comparator reverseOrder(Comparator);

6,对list集合中的元素进行位置的置换。

swap(list,x,y);

7,对list集合进行元素的替换。如果被替换的元素不存在,那么原集合不变。

replaceAll(list,old,new);

8,可以将不同步的集合变成同步的集合。

Set synchronizedSet(Set<T> s)

Map synchronizedMap(Map<K,V> m)

List synchronizedList(List<T> list)

9. 如果想要将集合变数组:

可以使用Collection 中的toArray 方法。注意:是Collection不是Collections工具类

传入指定的类型数组即可,该数组的长度最好为集合的size。

Arrays:用于对数组操作的工具类

1,二分查找,数组需要有序

binarySearch(int[])

binarySearch(double[])

2,数组排序

sort(int[])

sort(char[])……

  1. 将数组变成字符串。

 toString(int[])

  1. 复制数组。
     copyOf();
  2. 复制部分数组。

copyOfRange():

  1. 比较两个数组是否相同。

equals(int[],int[]);

  1. 将数组变成集合。

List asList(T[]);

这样可以通过集合的操作来操作数组中元素,

但是不可以使用增删方法,add,remove。因为数组长度是固定的,会出现

UnsupportOperationExcetion。

可以使用的方法:contains,indexOf。。。

如果数组中存入的基本数据类型,那么asList会将数组实体作为集合中的元素。

如果数组中的存入的引用数据类型,那么asList会将数组中的元素作为集合中

的元素。

import java.util.ArrayList;

import java.util.Collections;

import java.util.Arrays;

import java.util.List;

class Demo1 {

    public static void main(String[] args){

       ArrayList<Integer> list = new ArrayList<Integer>();

       list.add(4);

       list.add(3);

       list.add(1);

       list.add(2);

       list.add(3);

       // 排序

       Collections.sort(list);

       // 折半查找的前提是排序好的元素

        System.out.println( Collections.binarySearch( list , 8 ) );  // 找不到返回-插入点-1

       // 反序集合输出

       Collections.reverse( list );

       System.out.println( list );

       // 求最值

       System.out.println( Collections.max( list ) );   // 4

       // fill()  使用指定的元素替换指定集合中的所有元素

       // Collections.fill( list, 5 );

       System.out.println( list );

       // 将数组转换为集合

       Integer is[] = new  Integer[]{6,7,8};

       List<Integer> list2 =  Arrays.asList(is);

       list.addAll( list2 );

       System.out.println( list );

       // List转换为数组

       Object [] ins =  list.toArray();

       System.out.println( Arrays.toString( ins ) );

    }

}

集合的练习

问题: 定义一个Person数组,将Person数组中的重复对象剔除?

思路:

1. 描述一个Person类

2. 将数组转换为Arrays.asList() List

3. Set addAll( list )

4. hashCode()且equals()

import java.util.Arrays;

import java.util.Set;

import java.util.List;

import java.util.HashSet;

// 1. 描述Person类

class Person {

    public String name;

    public int age;

    public Person() {

    }

    public Person(String name, int age) {

       this.name = name;

       this.age = age;

    }

    public String toString() {

       return getClass().getName() + " : name=" + this.name + " age="

              + this.age;

    }

    // 4. 重写hashCode和equals()

    public int hashCode() {

       return this.age;

    }

    public boolean equals(Object o) {

       Person p = null;

       if (o instanceof Person)

           p = (Person) o;

       return this.name.equals(p.name) && (this.age == p.age);

    }

}

class Demo2 {

    public static void main(String[] args) {

       Person[] ps = new Person[] { new Person("jack", 34),

              new Person("lucy", 20), new Person("lili", 10),

              new Person("jack", 34) };

       // 遍历数组

       System.out.println(Arrays.toString(ps));

       // 2. 将自定义对象数组转换为List集合

       List<Person> list = Arrays.asList(ps);

        // 3. 将List转换为Set

       Set<Person> set = new HashSet<Person>();

       set.addAll(list);

       System.out.println(set);

    }

}

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

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

相关文章

阿里云优惠券使用方法图解_优惠券免费领取入口

2024年最新阿里云优惠代金券领取入口&#xff0c;阿里云服务器优惠代金券、域名代金券&#xff0c;在领券中心可以领取当前最新可用的满减代金券&#xff0c;阿里云百科aliyunbaike.com分享阿里云服务器代金券、领券中心、域名代金券领取、代金券查询及使用方法&#xff0c;可以…

第11章 数据仓库和数据智能知识点梳理

第11章 数据仓库和数据智能知识点梳理&#xff08;附带页码&#xff09; ◼ 数据仓库&#xff08;Data Warehouse&#xff0c;DW&#xff09;&#xff1a;始于 20 世纪 80 年代&#xff0c;发展于 20 世纪 90 年代&#xff0c;后与商务智能&#xff08;Business Inteligence,BI…

jenkins下载安装(mac)

下载官网 直接命令安装 Sample commands: Install the latest LTS version: brew install jenkins-ltsStart the Jenkins service: brew services start jenkins-ltsRestart the Jenkins service: brew services restart jenkins-ltsUpdate the Jenkins version: brew upgrade …

【Javascript】数据类型检测

文章目录 一、typeof1、描述2、示例 二、instanceof1、语法2、示例 三、Object.prototype.toString.call()1、描述2、语法3、示例4、通用判断方法 在JavaScript中&#xff0c;你可以用不同的方式检测数据类型。这是因为JavaScript是一种弱类型或动态语言&#xff0c;变量没有预…

Linux 安装KVM虚拟机

什么是KVM虚拟机&#xff1f; KVM 是 Kernel-based Virtual Machine 的缩写&#xff0c;是一种用于虚拟化的开源硬件虚拟化技术。它使用 Linux 内核的虚拟化模块&#xff0c;将物理服务器划分为多个虚拟机。KVM 允许虚拟机直接访问物理硬件资源,从而提供出色的性能和稳定性,同…

WARNING: No swap limit support——查看docker状态时提示警告

环境&#xff1a;Ubuntu 20.04 1、警告详情 执行命令 service docker status如下图 2、解决办法 2.1 修改文件 执行命令 vim /etc/default/grub在GRUB_CMDLINE_LINUX中追加cgroup_enablememory swapaccount1&#xff0c;如下&#xff1a; # If you change this file…

MyBatis 面试题(四)

1. MyBatis 中 Mapper 接口的实现原理是? MyBatis 中 Mapper 接口的实现原理主要基于 Java 的动态代理和反射机制。以下是 Mapper 接口实现原理的详细解释&#xff1a; Mapper 接口定义&#xff1a;首先&#xff0c;开发者需要定义一个 Mapper 接口&#xff0c;该接口中声明了…

【六】fastapi+vue前后端分离项目

前端代码 https://gitee.com/feiminjie/helloworldfront 后端代码 https://gitee.com/feiminjie/helloworld 整体效果 首页 用例管理页 用例详情页

GPT 浅析

GPT 浅析 文章目录 GPT 浅析GPT 1无监督预训练有监督微调任务相关的输入变换 GPT2GPT3 GPT 1 在模型架构上&#xff0c;GPT-1基于Transformer构造&#xff0c;这是因为与其他卷积神经网 络或者循环神经网络相比&#xff0c;Transformer提供了效率更高的方法来处理文本 中的长期…

几年前删除的照片如何恢复?5步操作,快速找回iPhone照片

“去年三月份参加了社区的志愿者活动拍了好几张照片&#xff0c;近期学校组织我申报市级优秀学生需要我的参加志愿者的照片当材料&#xff0c;但是照片在一年前就删掉了。删除的时间比较久&#xff0c;各位有没有什么方法可以恢复苹果手机的照片&#xff1f;” 在使用苹果手机的…

rk3588 安卓调试

rknn装上了android系统&#xff0c;用type-c usb连接上电脑&#xff0c;设备管理器发现了rk3588&#xff0c;但是Android Studio没有发现设备 后来怀疑是驱动没有安装&#xff0c;我用的驱动下载地址&#xff1a; 瑞芯微Rockchip驱动安装助手(适用于RK3308 RK3399等) Mcuzone…

使用Python实现集成学习算法:Bagging与Boosting

集成学习是一种机器学习方法&#xff0c;它通过结合多个弱学习器来构建一个强大的模型&#xff0c;从而提高预测的准确性和稳定性。在本文中&#xff0c;我们将介绍两种常见的集成学习算法&#xff1a;Bagging&#xff08;自举聚合&#xff09;和Boosting&#xff08;提升法&am…

还有同学开题报告没写吗?

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

springboot 文件上传Linux环境报错

java.io.IOException: Malformed input or input contains unmappable characters: /data/upload_file/upload/2020/04/16/测试专用_20240416114011A001.pdf程序部署到Linux环境下&#xff0c;文件上传报错&#xff0c;这是因为服务器编码问题。 使用命令查看服务器编码&#x…

【智能算法】鸭群算法(DSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;Zhang等人受到自然界鸭群觅食行为启发&#xff0c;提出了鸭群算法&#xff08;Duck Swarm Algorithm, DSA&#xff09;。 2.算法原理 2.1算法思想 DSA基于自然界鸭群觅食过程&…

matplotlib手动调用默认配色

matplotlib 画图有个默认配色方案&#xff0c;在画不同图时会保持一致。如&#xff1a; import numpy as np import matplotlib.pyplot as plt# 图 1 数据 x np.arange(12).astype(np.float32) 1 y1 np.log(x) y2 1 / x y3 np.sin(x) # 图 2 数据 a np.random.randn(200…

十万栋BIM建筑同屏加载!AMRT3D引擎领跑,强力赋能数字孪生

AMRT3D数字孪生引擎https://www.amrt3d.com/#/ AMRT3D是让用户轻松搭建智慧城市、智慧工厂、CIM系统等类型应用的轻量化图形引擎&#xff0c;通过基于自主研发三维底层技术支持&#xff0c;可以让数字化、可视化项目轻松运行在Web等多平台。 它提供了百余种3D功能&#xff0c;…

GpuMall智算云在GPU云领域有哪些核心技术?

GpuMall智算云领域拥有多项核心技术&#xff0c;这些技术共同构成了其强大且高效的GPU算力服务平台。以下是一些GpuMall智算云领域的核心技术&#xff1a; GpuMall智算云 | 省钱、好用、弹性。租GPU就上GpuMall,面向AI开发者的GPU云平台 1. GPU算力资源池化技术 GpuMall利用…

公园高速公路景区校园IP网络广播音柱SIP音柱

公园高速公路景区校园IP网络广播音柱SIP音柱 适用于学校、车站、教堂、工厂、仓库、公园停车场及露天市场高速公路等场所播放录制语音文件或背景音乐节目&#xff0c;专业一体化音箱设计&#xff0c;高强度防水设计&#xff0c;符合IP54防护等认证&#xff0c;数字化产品&…

银河麒麟服务器系统中mysql数据库使用gdb内存回收报错问题处理

银河麒麟服务器系统中mysql数据库使用gdb内存回收报错问题处理 一 系统环境二 问题现象三 分析原因四 解决方法 问题描述&#xff1a;在系统中执行回收命令&#xff08;gdb --batch --pid pidof mysqld --ex ‘call malloc_trim(0)’;&#xff09;报错’malloc_trim’ has unkn…