Java集合中的通用算法,开发效率翻倍

引言

Java在日常工作中用的非常多,每天日复一日的增删改查,集合作为最常见的数据结构为我们处理数据提供了很大的方便,集合中有一些常见的算法,比如:排序,二分查找,洗牌算法等等,本文主要介绍Java集合中常见的通用算法。

函数作用
sort()排序
shuffle()进行洗牌
reverse()颠倒元素的顺序
fill()用指定值替换元素中的每个元素
copy()创建从指定源到目标的元素副本
swap()交换集合中两个元素的位置
addAll()将一个集合的所有元素添加到其他集合中
binarySearch()进行搜索
frequency()返回元素在集合中出现的次数
disjoint()检查两个元素是否包含某些共同元素
min() max()分别用于查找最小和最大元素

Java集合中的通用算法

sort()排序

import java.util.ArrayList;
import java.util.Collections;public class Main {public static void main(String[] args) {// 初始化集合ArrayList<Integer> numbers = new ArrayList<>();// 添加元素numbers.add(4);numbers.add(2);numbers.add(3);System.out.println("Unsorted ArrayList: " + numbers);// 排序Collections.sort(numbers);System.out.println("Sorted ArrayList: " + numbers);}
}

输出

Unsorted ArrayList: [4, 2, 3]
Sorted ArrayList: [2, 3, 4]

shuffle()进行洗牌

import java.util.ArrayList;
import java.util.Collections;public class Main {public static void main(String[] args) {// 初始化集合ArrayList<Integer> numbers = new ArrayList<>();// 添加元素numbers.add(1);numbers.add(2);numbers.add(3);System.out.println("Sorted ArrayList: " + numbers);// 洗牌Collections.shuffle(numbers);System.out.println("ArrayList using shuffle: " + numbers);}
}

输出

Sorted ArrayList: [1, 2, 3]
ArrayList using shuffle: [1, 2, 3]

reverse()颠倒元素的顺序

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);System.out.println("ArrayList: " + numbers);Collections.reverse(numbers);System.out.println("Reversed ArrayList: " + numbers);}
}

输出

ArrayList: [1, 2]
Reversed ArrayList: [2, 1]

fill()用指定值替换集合中的每个元素

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);System.out.println("ArrayList: " + numbers);Collections.fill(numbers, 0);System.out.println("ArrayList using fill(): " + numbers);}
}

输出

ArrayList: [1, 2]
ArrayList using fill(): [0, 0]

copy()创建从指定源到目标的元素副本

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers1 = new ArrayList<>();numbers1.add(1);numbers1.add(2);System.out.println("ArrayList1: " + numbers1);ArrayList<Integer> numbers2 = new ArrayList<>();numbers2.add(3);numbers2.add(4);numbers2.add(5);numbers2.add(6);System.out.println("ArrayList2: " + numbers2);Collections.copy(numbers2, numbers1);System.out.println("ArrayList using copy(): " + numbers2);}
}

输出

ArrayList1: [1, 2]
ArrayList2: [3, 4, 5, 6]
ArrayList using copy(): [1, 2, 5, 6]

swap()交换集合中两个元素的位置

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);System.out.println("ArrayList: " + numbers);Collections.swap(numbers, 0,1);System.out.println("ArrayList using swap(): " + numbers);}
}

输出

ArrayList: [1, 2]
ArrayList using swap(): [2, 1]

addAll()将一个集合的所有元素添加到其他集合中

import java.util.ArrayList;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers1 = new ArrayList<>();numbers1.add(1);numbers1.add(2);System.out.println("ArrayList1: " + numbers1);ArrayList<Integer> numbers2 = new ArrayList<>();numbers2.add(3);numbers2.add(4);System.out.println("ArrayList2: " + numbers2);numbers1.addAll(numbers2);System.out.println("ArrayList using addAll(): " + numbers1);}
}

输出

ArrayList1: [1, 2]
ArrayList2: [3, 4]
ArrayList using addAll(): [1, 2, 3, 4]

binarySearch()进行搜索

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);numbers.add(3);int pos = Collections.binarySearch(numbers, 3);System.out.println("The position of 3 is " + pos);}
}

输出

The position of 3 is 2

frequency()返回元素在集合中出现的次数

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);numbers.add(3);numbers.add(2);System.out.println("ArrayList: " + numbers);int count = Collections.frequency(numbers, 2);System.out.println("Count of 2: " + count);}
}

输出

ArrayList: [1, 2, 3, 2]
Count of 2: 2

disjoint()检查两个集合是否包含某些共同元素

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);numbers.add(3);numbers.add(2);System.out.println("ArrayList1: " + numbers);ArrayList<Integer> newNumbers = new ArrayList<>();newNumbers.add(5);newNumbers.add(6);System.out.println("ArrayList2: " + newNumbers);boolean value = Collections.disjoint(numbers, newNumbers);System.out.println("Two lists are disjoint: " + value);}
}

输出

ArrayList1: [1, 2, 3, 2]
ArrayList2: [2, 6]
Two lists are disjoint: false

min()方法max()分别用于查找最小和最大元素

import java.util.ArrayList;
import java.util.Collections;public class Main16 {public static void main(String[] args) {ArrayList<Integer> numbers = new ArrayList<>();numbers.add(1);numbers.add(2);numbers.add(3);int min = Collections.min(numbers);System.out.println("Minimum Element: " + min);int max = Collections.max(numbers);System.out.println("Maximum Element: " + max);}
}

输出

Minimum Element: 1
Maximum Element: 3

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

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

相关文章

【开源】基于JAVA的桃花峪滑雪场租赁系统

项目编号&#xff1a; S 036 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S036&#xff0c;文末获取源码。} 项目编号&#xff1a;S036&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…

关于“Python”的核心知识点整理大全19

目录 ​编辑 8.6.4 使用 as 给模块指定别名 8.6.5 导入模块中的所有函数 8.7 函数编写指南 8.8 小结 第9章 类 9.1 创建和使用类 9.1.1 创建 Dog 类 dog.py 1. 方法__init__() 2. 在Python 2.7中创建类 9.1.2 根据类创建实例 1. 访问属性 2. 调用方法 3. 创建多…

快速搭建知识付费平台?我有才,为你提供一站式解决方案

在当今数字化时代&#xff0c;知识付费已经成为一种趋势&#xff0c;越来越多的人愿意为有价值的知识付费。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。同时&#xff0c;开发和维护一个属于自己的知识付费平台需要…

一篇文章读懂Jenkins的发展历程

Jenkins是一款开源的持续集成&#xff08;Continuous Integration&#xff09;工具&#xff0c;它的发展历程可以追溯到2004年&#xff0c;以下是Jenkins的发展历程&#xff1a; 起源 Jenkins起源于Hudson项目&#xff0c;Hudson是一个持续集成工具&#xff0c;由日本的一家公…

耗时8个月,独立开发者发布:eTab新标签页

eTab是一款专注互联网开发者的浏览器起始页&#xff0c;高颜值、个性化、小组件、自由化布局、高质量行业文章&#xff0c;永久无广告。eTab让你在高效工作之余&#xff0c;发现更多有价值的内容&#xff01; 让你在高效工作之余&#xff0c;发现更多有价值的内容&#xff01; …

Oracle md5

SQL CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 ISretval varchar2(32); BEGINretval : utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING > passwd));RETURN retval; END; 测试 select md5(lw112190) from dual 效果

70套大数据可视化大屏模板,总有一款适合你(含演示示例)

分享70款还不错的前端数据可视化大屏源码 其中包含行业&#xff1a;智慧社区、智慧物业、政务系统、智慧交通、智慧工程、智慧医疗、智慧金融银行等&#xff0c;全网最新、最多&#xff0c;最全、最酷、最炫大数据可视化模板。 你可以点击预览获取查看该源码资源的最终展示效果…

三、JS逆向

一、JS逆向 解释&#xff1a;在我们爬虫的过程中经常会遇到参数被加密的情况&#xff0c;这样只有先在前端搞清楚加密参数是怎么生成的才能继续我们的爬虫&#xff0c;而且此时我们还需要用python去执行这个加密的过程。本文主要讲怎么在浏览器调试JS&#xff0c;以及Python执…

基于ssm企业人事管理系统的设计与实现论文

摘 要 进入信息时代以来&#xff0c;很多数据都需要配套软件协助处理&#xff0c;这样可以解决传统方式带来的管理困扰。比如耗时长&#xff0c;成本高&#xff0c;维护数据困难&#xff0c;数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的企业人事管理系统&am…

从 “template1“ is being accessed 报错,看PG数据库的创建过程

一、 问题背景 创建db时遇到以下报错&#xff1a; postgres# create database pgdb; ERROR: source database "template1" is being accessed by other users DETAIL: There is 1 other session using the database. 其实解决方法是比较简单的&#xff0c;查询谁…

后端对数据库查询的时间格式化

方式一&#xff1a; 在属性上加入注解&#xff0c;对日期进行格式化&#xff0c;如&#xff1a; JsonFormat(pattern "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime;方式二&#xff1a; 在WebMvcConfiguration 中扩展Spring MVC的消息转换器&#xf…

基于ssm旅行社管理系统的设计与实现论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本旅行社管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息&…

RFID助力光伏硅片生产:透明溯源,质量至上

RFID助力光伏硅片生产&#xff1a;透明溯源&#xff0c;质量至上 应用背景 光伏产业作为可再生能源的主要发展方向之一&#xff0c;在过去几十年中取得了显著的进展。为了提高光伏产业的效率和质量。在光伏硅片生产过程中&#xff0c;原材料的获取、管理和追溯对于保证硅片品…

换能器信号工作原理

一、ANB板子发送一个周期&#xff0c;频率为40M和60M的 78V的激励脉冲信号。如下图 频率越高&#xff0c;周期越短。图像分辨率更高。原因如下&#xff1a; ①由于采用的是纵向分辨率。相邻两个点之间必须要间隔 下图的2分之兰大才能被识别。 二、当信号给到换能器后&#xf…

CollectionUtils 包

依赖 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4</version> </dependency>isEmpty 判断是否为空 CollectionUtils.isEmpty(null): true CollectionUtil…

邮政快递物流查询,分析筛选出提前签收件

批量查询邮政快递单号的物流信息&#xff0c;将提前签收件分析筛选出来。 所需工具&#xff1a; 一个【快递批量查询高手】软件 邮政快递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界面左上角…

SpringBoot核心功能-temp

yml&类配置 Configuration-processor

《C++新经典设计模式》之第14章 代理模式

《C新经典设计模式》之第14章 代理模式 代理模式.cpp 代理模式.cpp #include <iostream> #include <memory> #include <vector> #include <string> #include <fstream> using namespace std;// 客户端和访问对象间引入代理对象&#xff08;间接…

nestjs守卫/全局守卫校验jwt

一、守卫 目标 部分接口需要用户登录后才可以访问&#xff0c;用户登录后可以颁发 jwt_token 给前端&#xff0c;前端在调用需要鉴权的接口&#xff0c;需要在请求头添加 jwt_token&#xff0c;后端校验通过才能继续访问&#xff0c;否则返回403无权访问 创建守卫 anth 安装…

debezium数据脱敏配置介绍及源码分析

debezium官网地址参考&#xff1a; Debezium connector for MySQL :: Debezium Documentation 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;笔芯笔芯. CDC采集数据时会有字段包含敏感字符需要做脱敏处理&#xff0c;debezium提供了4种脱敏方案&#xff0c;注意只…