- 浏览: 189135 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (228)
- 链接数据库 (1)
- Linux下面安装tomcat步骤 (1)
- 数据库简单添加索引 (1)
- Ubuntu 16.04安装jdk步骤 (1)
- Ubuntu 16.04安装mysql链接工具workbench (1)
- Java基础 (1)
- Java 获取两个时间的时间查 如 1 天 2 小时 30 分钟 (1)
- jdbc链接增删该查 (1)
- springboot 跨域解决 (1)
- springboot如何读取配置文件(application.yml)中的属性值 (1)
- springboot配置redis (1)
- 数据库访问优化法则 (1)
- springboot 配置定时任务 (1)
- 使用Spring Boot上传文件 (1)
- Java并发编程:Callable、Future和FutureTask (1)
- springboot配置所有信息demo (1)
- 常用软件地址 (1)
- Java DateUtil时间大全 (1)
- Java DateUtil当天,本周,本月时间获取方法 (1)
- @Data的用法 (1)
- 身份证工具类 (1)
- springboot添加日志 (1)
- List集合中的对象按照某个字段去重实现 (1)
- JavaBean和Map转换封装类 (1)
- StringUtils工具类用法 (1)
- BigDecimal用户详情 (1)
- java常用集合总结 (1)
- openfile 插件开发步骤 (0)
- Linux rpc客户端步骤 (1)
- Java开发必会的Linux命令 (1)
- springboot配置拦截器,控制登录跳转 (1)
- springboot 异步调用的方法 (0)
- springboot如何读取配置文件test.properties (1)
- springboot 异步调用的方法 (1)
- HttpClient操作,HttpPost (1)
- HttpGet (1)
- HttpDelete (1)
- HttpPut (1)
- mybatis生成代码后,想用自己的关联查询demo (1)
- Arrays工具类十大常用方法 (1)
- 如何生成唯一订单号 (1)
- 订单号唯一性 (1)
- msyql lest的用法 (1)
- //循环递归删除 (0)
- 循环递归删除 (1)
- java 属性首字母大写返回json解决办法 (1)
- 根据两点间经纬度坐标(double值),计算两点间距离,单位为米 (1)
- 运用开发好的jar部署到linux服务中 (1)
- mybatis批量新增 (1)
- mybatis 增删该查demo,新手必看 (1)
- java中字符串查找一个字符串的个数几种方法 (1)
- @Select in 的用法 (1)
- Ubuntu 16.04使用ieda简单配置 (1)
- 统计一个字符串中相应字符出现的次数 (1)
- SimpleDateFormat同步的解决办法 (1)
- gradle打包springboot jar例子 (1)
- java 提取字符串中的数字 (1)
- springboot 对像异常处理,还可以作为全部异常处理 (1)
- 面试题 (0)
- Linux下面安装virtualBox (1)
- java带有效期的map (1)
- 2018年JAVA基础面试题和高级面试题总结 (1)
- mysql修改密码的方法 (1)
- 排名前 16 的 Java 工具类 (1)
- 最完整的Linux常用命令大全 (1)
- Mysql 开发标准规范 (1)
- idea 快捷键 (1)
- mysql 建立索引 (1)
- Java中判断字符串是否为数字的五种方法 (1)
- springboot集成redis (1)
- springboot异步调用demo (1)
- springboot2集成redis (1)
- springboot2集成Elasticsearch (1)
- java过滤敏感字体的方式 (1)
- 对象的值赋给另一个对象 (1)
- mybitse+pagehelper 的使用方法 (1)
- java时间的处理 (1)
- xshell5 下载地址 (1)
- springboot2集成Excel (1)
- 检查数组是否包含某个值的方法 (1)
- 关于Java代码优化的N条建议! (1)
- Java Map按Key值进行排序 (1)
- List进行排序 (1)
- Stream 完整实例 (1)
- StringUtils isNoneBlank和isAnyBlank——demo (1)
- vim最全常用命令 (1)
- JWT生成Token (1)
- 学习参看地址 (1)
- java初始化数据 (1)
- 简单json (1)
- 数据库脚本 (1)
- restTemplate http请求 (1)
- 学习网站 (1)
- JsonUtil (1)
- Rsa (1)
- BeanUtils的赋值方法比较 (1)
- HttpClientUtil (2)
- ValidUtils (0)
- 读取excel,批量插入库demo (1)
- springboot对redis封装使用 (1)
- java后端简答验证码 (1)
- java高级面试题及其答案 (1)
- 序列换成json时 (1)
- 将所有的long变成string (1)
- ControllerAdvice (0)
- RedisService 工具类 (1)
- Java常用正则表达式验证工具类RegexUtils (1)
- CollectionUtil (1)
- thrift使用 (1)
- springboot播客学习 (1)
- mybitse 批量更新 (1)
- https://www.cnblogs.com/cxiaocai/p/11715874.html (1)
- elasticsearch安装及其head步骤 (0)
- elasticsearch7.6.2安装及其head、kibana、ik分词器步骤 (0)
- elasticsearch7.6.2集成springboot (0)
- gradle仓库选址 (1)
- elasticsearch7.6.2集成springboot2.2.6---2 (1)
- elasticsearch7.6.2安装及其head、kibana、ik分词器步骤-----1 (1)
- elasticsearch7.6.2集成springboot2.2.6基本语法---3 (1)
- Jsoup (1)
- elasticsearch7.6.2集成springboot2.2.6----demo (1)
- mybatis官网地址 (1)
- springboot发送邮件到qq (1)
- navicat Premium 链接sql Server的方法 (1)
- 简单开发springboot搭建 (1)
- sqlServer 查询两个小时的sql语句 (1)
- BigDecimalUtil (1)
- 雪花算法生成id (1)
- JsonUtils (1)
- Spring Boot监控与管理的实现 (1)
- springboot 使用undertow启动,替换tomcat (1)
- RedisConfig配置使用 (1)
- RedisUtil (1)
- easypoi读取excel (1)
- easyexcel读取excel (0)
- easyexcel读取excel与下载 (1)
- 生成指定长度的随机数 (1)
- Spring Boot AOP实战 (1)
- fastjsonfastjson新手必看 (1)
- 获取IP地址 (1)
- CommonUtils (1)
- 5万字长文:Stream和Lambda表达式最佳实践-附PDF下载 (1)
- DateUtils 最新工具类 (1)
- screw的使用 (1)
- 15000 字的 SQL 语句大全 (1)
- hutool (1)
- PdfToWord (1)
- MySQL修改最大连接数 (1)
- MAP排序 (1)
- 归纳从文件中读取数据的六种方法-JAVA IO基础总结 (1)
- 天气 (1)
- Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案 (1)
- 全网最全编程学习网站汇总来了,还不赶快收藏 (1)
- win10 (0)
- 电脑知识 (0)
- util工具类 (1)
- ieda提示mapper报错 (1)
- zysnba (1)
- 自增方式 (1)
- mybits链表查询 (1)
- SpringBoot如何优雅的处理校验参数 (1)
- 参考记录 (1)
- 企业微信封装方法 (1)
- 二维码 (1)
- mysql简单创建索引 (1)
- msyql函数 (1)
- mybitse-plus多表查询demo (1)
- git 提交本地代码步骤 (1)
- gradle5.X以上lombok引入 (1)
- SpringBoot定时任务及Cron表达式详解 (1)
- Hutool工具集之DateUtil(日期时间工具)详解使用 (1)
- 对象属性为空字符串变成null (1)
- DateUtils 工具类 (0)
- face++照片不对工具类 (1)
- 判断某个值是否在list集合中的某个对象中存在 (1)
- mybatisplus时间更新操作 (1)
- Java8 List通用方法处理总结 (1)
- 阿斯蒂芬 (0)
- springboot多数据源配置 (0)
- MyBatis和MyBatis-Plus 官网地址 (1)
- jwt (0)
- java---ValidUtils (1)
- Java之下载网络图片到本地文件夹 (1)
- 初始化内容数据 (1)
- springboot启动指定端口和启动环境 (1)
- 根据生日计算年龄 (1)
- idea快捷键大全 (1)
- springboot数据验证例子 (1)
- springboot文章 (1)
- 获取当前时间,推迟一年 (0)
- 获取当前时间,推迟一周 推迟一年示例 (1)
- ResultBean返回对象 (1)
- SpringBoot注解最全详解 (1)
- JeecgBoot (1)
- 电脑优化 (0)
- 简单数据队列 (1)
- CacheUtil换成工具类 (0)
- CacheUtil缓存工具类 (0)
- xml和对象互转 (0)
- 导出word (0)
- 企业微信通过code获取用户基本信息 (1)
- Java开发中的一些小技巧 (1)
- 判断当前时间是否在一个时间区间例如8点:21点 (1)
- springboot 启动指定环境 (1)
- 打印springboot启动的环境 (1)
- 根据时间日期获取当天是周几 (1)
- LocalDateTimeToString (1)
- java导出word (1)
- java 对xml和对象互转 (1)
- java CacheUtil缓存工具类 (1)
- 史上最牛逼电脑优化,让电脑飞起来 (1)
- isEmpty 和 isBlank 的用法区别 (1)
- 根据图片url地址获取其流InputStream (1)
- springboot解决LocalDateTime (1)
- springboot配置文件list映射 (1)
- SpringBoot中必须掌握的45个注解 (1)
- sql 优化的 15 个小技巧 (1)
- Cron表达式 (1)
- 数据库创建时间和修改时间默认值 (1)
- 小程序解析手机号 (1)
- 小程序获取手机号 (0)
- java 获取resource下面的文件路径,springboot打成jar也可以使用 (1)
- 数据库字段不显示对象和swwager前段不显示 (1)
- java生成pdf (1)
- springboot 异步调用 (1)
- java获取时间段内的每一天 (1)
- hutool----DateUtil简单的时间 (1)
- java 8两个List集合取交集、并集、差集、去重并集 (1)
- 服务调用demo (1)
- hutool导入excel (1)
- hutool导出 (1)
- 切面日志 (1)
- 校验参数为空 (1)
- 两个集合对象某一个属性相匹配 (1)
- JAVA stream流详细教程 (1)
- 查看java进程的命令 (1)
- Java 保留两位小数 百分数 (1)
- freemarker读写word模板生成word文档 (1)
- springboot项目中,读取 resources 目录下的文件的9种方式 (1)
- Knife4j (1)
- Java8 获取两个List交集 (1)
- list泛型和list对象交集 (1)
- 未来7天过生日的孩子sql (1)
- 数据校验,全局异常 (1)
- 获取最近10天过生日的sql (1)
- 随机数 (1)
- Java获取两个日期的天数打印 (1)
- 通过时间获取星期几 (1)
- Java时间类型相互转化 (2)
- 小程序登录 (1)
- 手机号 (0)
- sse调用 (0)
- httpsse调用 (1)
- 初始延迟3秒执行任务 (0)
最新评论
package com.huwei.modules.base.util;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
public class CollectionUtil {
/**
* int数组转字符串数组
* @param as
* @return
*/
static public String[] switchArray(Integer[] as) {
if(as == null) {
return new String[] {};
}
String[] result = new String[as.length];
for(int i = 0 ,len = as.length ;i < len ;++i) {
result[i] = String.valueOf(as[i]);
}
return result;
}
/**
* 数组中包含指定元素
* @param ele 元素
* @param arrays 数组
* @return
*/
static public boolean contains(String[] arrays ,String ele) {
if(Objects.isNull(arrays) || arrays.length == 0) {
return false;
}
for(int i = 0 ,len = arrays.length ;i < len ;++i) {
if((ele == null && arrays[i] == null) || (ele != null && ele.equals(arrays[i]))) {
return true;
}
}
return false;
}
/**
* 查找集合的交集
* @param a
* @param b
* @return
*/
static public int[] intersection(int[] a ,int[] b) {
if(Objects.nonNull(a) && Objects.nonNull(b)) {
return a.length > b.length ? intersection0(b, a)
: intersection0(a, b);
}
return new int[] {};
}
static private int[] intersection0(int[] minArray ,int[] maxArray) {
int[] temp = new int[minArray.length];
int count = 0;
for(int i = 0 ,minLen = minArray.length ;i < minLen ;++i) {
int currentVal = minArray[i];
if(!contains(currentVal, temp ,0 ,count)) {
if(contains(currentVal ,maxArray ,0 ,maxArray.length)) {
temp[count++] = currentVal;
}
}
}
int[] result0 = new int[count];
System.arraycopy(temp, 0, result0, 0, count);
return result0;
}
/**
* 使用二分算法查询集合的交集
* @param a
* @param b
* @return
*/
static public int[] intersectionByBinarySearch(int[] a ,int[] b) {
if(Objects.nonNull(a) && Objects.nonNull(b)) {
return a.length > b.length ? intersectionByBinarySearch0(b, a)
: intersectionByBinarySearch0(a, b);
}
return new int[] {};
}
static private int[] intersectionByBinarySearch0(int[] minLengthArray ,int[] maxLengthArray) {
Set<Integer> tempResult = new HashSet<Integer>();
Arrays.sort(minLengthArray);
Arrays.sort(maxLengthArray);
for(int i = 0 ,len = minLengthArray.length ;i < len ;++i) {
int currentVale = minLengthArray[i];
if(Arrays.binarySearch(maxLengthArray, currentVale) >= 0) {
tempResult.add(Integer.valueOf(currentVale));
}
}
return setToArray(tempResult);
}
/**
* 多线程的方式,应该有调用者实现多线程
* @param a
* @param b
* @return
*/
static public int[] intersectionByMultithread(int[] a ,int[] b) {
if(Objects.nonNull(a) && Objects.nonNull(b)) {
return a.length > b.length ? intersectionByMultithread0(b, a)
: intersectionByMultithread0(a, b);
}
return new int[] {};
}
static public int[] intersectionByMultithread0(int[] minLengthArray ,int[] maxLengthArray) {
int threadNumber = Runtime.getRuntime().availableProcessors();
int maxLength = maxLengthArray.length;
int sliceArrayBaseLength = maxLength / threadNumber;
if(sliceArrayBaseLength <= 1) {return intersectionByBinarySearch0(minLengthArray, maxLengthArray);}
ConcurrentLinkedQueue<Object> tempResult = new ConcurrentLinkedQueue<>();
for(int i = 0 ;i < threadNumber ;++i) {
int sliceArrayStartIndex = sliceArrayBaseLength * i;
int sliceArrayEndIndex =
sliceArrayBaseLength + sliceArrayBaseLength + sliceArrayStartIndex > maxLength ?
maxLength : sliceArrayBaseLength + sliceArrayStartIndex;
int currentSliceArrayLength = sliceArrayEndIndex - sliceArrayStartIndex;
int[] sliceArray = new int[currentSliceArrayLength];
System.arraycopy(maxLengthArray, sliceArrayStartIndex, sliceArray, 0, currentSliceArrayLength);
new Thread(()->{
tempResult.add(intersectionByBinarySearch(minLengthArray, sliceArray));
}).start();
}
while(tempResult.size() != threadNumber) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
}
}
int[] result = new int[0];
while(!tempResult.isEmpty()) {
result = combineAndRemoveRepeating(result, (int[])tempResult.poll());
}
return result;
}
/**
* 查询array中是否包含val值
* @param val
* @param array
* @param offset
* @param len
* @return
*/
static public boolean contains(int val ,int[] array ,int offset,int len) {
checkNull(array);
checkIndex(offset, len, array.length);
int i = offset;
for(;i < len ;++i) {
if(val == array[i]) {
return true;
}
}
return false;
}
static private void checkNull(Object ...obj) {
if(Objects.isNull(obj)) {
throw new NullPointerException("array is null");
}
for(int i = 0 ,len = obj.length ;i < len ;++i) {
if(Objects.isNull(obj[i])) {
throw new NullPointerException("array is null");
}
}
}
static private void checkIndex(int offset ,int srcLen ,int arrayLen) {
if(offset < 0 || srcLen < offset || srcLen > arrayLen) {
throw new RuntimeException("index is error ,offset = " + offset + " ;len = " + srcLen);
}
}
/**
* 将数组a和数组b组合为新的数组
* @param a
* @param b
* @return
*/
public static int[] combine(int[] a, int[] b) {
checkNull(a,b);
int[] result = new int[a.length + b.length];
System.arraycopy(a, 0, result, 0, a.length);
System.arraycopy(b, 0, result, a.length, b.length);
return result;
}
/**
* 查询数组a 和 数组b的非交集
* @param a
* @param b
* @return
*/
static public int[] nonredundant(int[] a, int[] b) {
checkNull(a,b);
return a.length > b.length ? nonredundant0(b, a) : nonredundant0(a, b);
}
static private int[] nonredundant0(int[] minLengthArray, int[] maxLengthArray) {
Set<Integer> tempResult = new HashSet<>();
Arrays.sort(minLengthArray);
Arrays.sort(maxLengthArray);
for(int i = 0 ,len = maxLengthArray.length ;i < len ;++i) {
if(Arrays.binarySearch(minLengthArray, maxLengthArray[i]) < 0) {
tempResult.add(maxLengthArray[i]);
}
}
for(int i = 0 ,len = minLengthArray.length ;i < len ;++i) {
if(Arrays.binarySearch(maxLengthArray, minLengthArray[i]) < 0) {
tempResult.add(minLengthArray[i]);
}
}
return setToArray(tempResult);
}
/**
* 合并数组并去掉重复的数据
* @param a
* @param b
* @return
*/
static public int[] combineAndRemoveRepeating(int[] a ,int[] b) {
checkNull(a,b);
Set<Integer> resultSet = new HashSet<>();
copyToSet(a, resultSet);
copyToSet(b, resultSet);
return setToArray(resultSet);
}
static private void copyToSet(int[] src ,Set<Integer> dest) {
for(int i = 0 ,len = src.length ;i < len ;++i) {
dest.add(Integer.valueOf(src[i]));
}
}
static private int[] setToArray(Set<Integer> src) {
if(Objects.nonNull(src) && !src.isEmpty()) {
int[] result = new int[src.size()];
int writeIndex = 0;
Iterator<Integer> iter = src.iterator();
while(iter.hasNext()) {
result[writeIndex++] = iter.next().intValue();
}
return result;
}
return new int[] {};
}
// static public void main(String[] args) {
// int[] a = new int[] {1,2,3};
// int[] b = new int[] {2,3,4};
// System.out.println(Arrays.toString(intersection(a, b)));
// }
}
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Objects;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
public class CollectionUtil {
/**
* int数组转字符串数组
* @param as
* @return
*/
static public String[] switchArray(Integer[] as) {
if(as == null) {
return new String[] {};
}
String[] result = new String[as.length];
for(int i = 0 ,len = as.length ;i < len ;++i) {
result[i] = String.valueOf(as[i]);
}
return result;
}
/**
* 数组中包含指定元素
* @param ele 元素
* @param arrays 数组
* @return
*/
static public boolean contains(String[] arrays ,String ele) {
if(Objects.isNull(arrays) || arrays.length == 0) {
return false;
}
for(int i = 0 ,len = arrays.length ;i < len ;++i) {
if((ele == null && arrays[i] == null) || (ele != null && ele.equals(arrays[i]))) {
return true;
}
}
return false;
}
/**
* 查找集合的交集
* @param a
* @param b
* @return
*/
static public int[] intersection(int[] a ,int[] b) {
if(Objects.nonNull(a) && Objects.nonNull(b)) {
return a.length > b.length ? intersection0(b, a)
: intersection0(a, b);
}
return new int[] {};
}
static private int[] intersection0(int[] minArray ,int[] maxArray) {
int[] temp = new int[minArray.length];
int count = 0;
for(int i = 0 ,minLen = minArray.length ;i < minLen ;++i) {
int currentVal = minArray[i];
if(!contains(currentVal, temp ,0 ,count)) {
if(contains(currentVal ,maxArray ,0 ,maxArray.length)) {
temp[count++] = currentVal;
}
}
}
int[] result0 = new int[count];
System.arraycopy(temp, 0, result0, 0, count);
return result0;
}
/**
* 使用二分算法查询集合的交集
* @param a
* @param b
* @return
*/
static public int[] intersectionByBinarySearch(int[] a ,int[] b) {
if(Objects.nonNull(a) && Objects.nonNull(b)) {
return a.length > b.length ? intersectionByBinarySearch0(b, a)
: intersectionByBinarySearch0(a, b);
}
return new int[] {};
}
static private int[] intersectionByBinarySearch0(int[] minLengthArray ,int[] maxLengthArray) {
Set<Integer> tempResult = new HashSet<Integer>();
Arrays.sort(minLengthArray);
Arrays.sort(maxLengthArray);
for(int i = 0 ,len = minLengthArray.length ;i < len ;++i) {
int currentVale = minLengthArray[i];
if(Arrays.binarySearch(maxLengthArray, currentVale) >= 0) {
tempResult.add(Integer.valueOf(currentVale));
}
}
return setToArray(tempResult);
}
/**
* 多线程的方式,应该有调用者实现多线程
* @param a
* @param b
* @return
*/
static public int[] intersectionByMultithread(int[] a ,int[] b) {
if(Objects.nonNull(a) && Objects.nonNull(b)) {
return a.length > b.length ? intersectionByMultithread0(b, a)
: intersectionByMultithread0(a, b);
}
return new int[] {};
}
static public int[] intersectionByMultithread0(int[] minLengthArray ,int[] maxLengthArray) {
int threadNumber = Runtime.getRuntime().availableProcessors();
int maxLength = maxLengthArray.length;
int sliceArrayBaseLength = maxLength / threadNumber;
if(sliceArrayBaseLength <= 1) {return intersectionByBinarySearch0(minLengthArray, maxLengthArray);}
ConcurrentLinkedQueue<Object> tempResult = new ConcurrentLinkedQueue<>();
for(int i = 0 ;i < threadNumber ;++i) {
int sliceArrayStartIndex = sliceArrayBaseLength * i;
int sliceArrayEndIndex =
sliceArrayBaseLength + sliceArrayBaseLength + sliceArrayStartIndex > maxLength ?
maxLength : sliceArrayBaseLength + sliceArrayStartIndex;
int currentSliceArrayLength = sliceArrayEndIndex - sliceArrayStartIndex;
int[] sliceArray = new int[currentSliceArrayLength];
System.arraycopy(maxLengthArray, sliceArrayStartIndex, sliceArray, 0, currentSliceArrayLength);
new Thread(()->{
tempResult.add(intersectionByBinarySearch(minLengthArray, sliceArray));
}).start();
}
while(tempResult.size() != threadNumber) {
try {
Thread.sleep(1);
} catch (InterruptedException e) {
}
}
int[] result = new int[0];
while(!tempResult.isEmpty()) {
result = combineAndRemoveRepeating(result, (int[])tempResult.poll());
}
return result;
}
/**
* 查询array中是否包含val值
* @param val
* @param array
* @param offset
* @param len
* @return
*/
static public boolean contains(int val ,int[] array ,int offset,int len) {
checkNull(array);
checkIndex(offset, len, array.length);
int i = offset;
for(;i < len ;++i) {
if(val == array[i]) {
return true;
}
}
return false;
}
static private void checkNull(Object ...obj) {
if(Objects.isNull(obj)) {
throw new NullPointerException("array is null");
}
for(int i = 0 ,len = obj.length ;i < len ;++i) {
if(Objects.isNull(obj[i])) {
throw new NullPointerException("array is null");
}
}
}
static private void checkIndex(int offset ,int srcLen ,int arrayLen) {
if(offset < 0 || srcLen < offset || srcLen > arrayLen) {
throw new RuntimeException("index is error ,offset = " + offset + " ;len = " + srcLen);
}
}
/**
* 将数组a和数组b组合为新的数组
* @param a
* @param b
* @return
*/
public static int[] combine(int[] a, int[] b) {
checkNull(a,b);
int[] result = new int[a.length + b.length];
System.arraycopy(a, 0, result, 0, a.length);
System.arraycopy(b, 0, result, a.length, b.length);
return result;
}
/**
* 查询数组a 和 数组b的非交集
* @param a
* @param b
* @return
*/
static public int[] nonredundant(int[] a, int[] b) {
checkNull(a,b);
return a.length > b.length ? nonredundant0(b, a) : nonredundant0(a, b);
}
static private int[] nonredundant0(int[] minLengthArray, int[] maxLengthArray) {
Set<Integer> tempResult = new HashSet<>();
Arrays.sort(minLengthArray);
Arrays.sort(maxLengthArray);
for(int i = 0 ,len = maxLengthArray.length ;i < len ;++i) {
if(Arrays.binarySearch(minLengthArray, maxLengthArray[i]) < 0) {
tempResult.add(maxLengthArray[i]);
}
}
for(int i = 0 ,len = minLengthArray.length ;i < len ;++i) {
if(Arrays.binarySearch(maxLengthArray, minLengthArray[i]) < 0) {
tempResult.add(minLengthArray[i]);
}
}
return setToArray(tempResult);
}
/**
* 合并数组并去掉重复的数据
* @param a
* @param b
* @return
*/
static public int[] combineAndRemoveRepeating(int[] a ,int[] b) {
checkNull(a,b);
Set<Integer> resultSet = new HashSet<>();
copyToSet(a, resultSet);
copyToSet(b, resultSet);
return setToArray(resultSet);
}
static private void copyToSet(int[] src ,Set<Integer> dest) {
for(int i = 0 ,len = src.length ;i < len ;++i) {
dest.add(Integer.valueOf(src[i]));
}
}
static private int[] setToArray(Set<Integer> src) {
if(Objects.nonNull(src) && !src.isEmpty()) {
int[] result = new int[src.size()];
int writeIndex = 0;
Iterator<Integer> iter = src.iterator();
while(iter.hasNext()) {
result[writeIndex++] = iter.next().intValue();
}
return result;
}
return new int[] {};
}
// static public void main(String[] args) {
// int[] a = new int[] {1,2,3};
// int[] b = new int[] {2,3,4};
// System.out.println(Arrays.toString(intersection(a, b)));
// }
}
相关推荐
Java开发中中经常使用的Java工具类分享,工作中用得上,直接拿来使用,不用重复造轮子。
(OperationUtil.java)Collection工具包类(CollectionUtil.java)等等,如果下载者觉得使用方面的话,在下十分感谢,申明:代码没有经过十分严格测试,纯属自己爱好和方便编写的一些代码积累。
2. CollectionUtil:集合相关的辅助工具,包括集合的创建、遍历、比较以及集合元素的转换等。 3. StringUtil:提供字符串的高级操作,例如检查空值、替换、分割、连接等,还能进行正则表达式匹配。 4. LogUtil:提供...
mybatis-plus-join是mybatis plus的一个多表插件,只要会用mp就会用这个插件,仅仅依赖了lombok,而且是扩展mp的构造器并非更改原本的构造器,不会对原有项目产生一点点影响 mybatis-plus的多表插件完全按照mybats ...
例如,`CollectionUtil.ContainsAny(IEnumerable<T> source, IEnumerable<T> items)`可以检查源集合是否包含目标集合中的任何元素。 7. **异常处理**: ExceptionUtil类可能提供了一些处理异常的辅助方法,如记录...
3. **CollectionUtil**: 针对Java集合框架的操作,CollectionUtil可能包含对List、Set、Map等进行操作的方法,如集合的合并、去重、排序、过滤等。例如,`isEmpty()`检查集合是否为空,`merge()`合并两个集合,`...
3. **集合工具类(CollectionUtil)**:集合处理是Java开发中的重要环节,CollectionUtil提供了一系列针对List、Set、Map等集合的操作,如集合的合并、分割、去重、排序等,使得集合操作更加便捷。 4. **IO流工具类...
3. **集合操作**:集合操作工具类,如`CollectionUtil`,可以提供对数组、列表或其他集合类型的扩展方法,如查找、排序、去重、合并等。 4. **文件和目录操作**:`FileUtil`和`DirectoryUtil`可能封装了文件系统的...
`common-util`模块是Agile Framework Common Util的核心部分,它包含了各种通用的工具方法,除了`ObjectUtil`外,可能还包括`ArrayUtil`、`CollectionUtil`、`MapUtil`等,分别提供了对数组、集合和映射的操作支持。...
3. **集合操作**:CollectionUtil类可能包含对List、Set、Map等各种集合的扩展操作,如快速合并、过滤、转换等,使得集合操作更加灵活。 4. **文件操作**:FileUtil类可能提供了读写文件、复制文件、检查文件或目录...
比如,可能存在一个`CollectionUtil`类,包含`Sort`方法对自定义对象进行排序,`Merge`方法合并两个列表,并且`RemoveDuplicates`方法删除集合中的重复元素。 此外,文件和IO操作也是常见功能之一。`DotNet....
3. `CollectionUtil.java`:集合操作的工具类,如清空、合并、过滤、排序等集合对象。 4. `NumberUtil.java`:数值计算和转换的工具,包括数学运算、格式化输出、数字安全处理等。 5. `FileUtil.java`:文件和IO流...
3. **CollectionUtil**:集合操作相关的工具类,可能包括了对List、Set、Map等数据结构的通用操作,如查找、添加、删除元素,转换集合类型,集合合并等。这些方法可以减少手动处理集合时的代码量。 4. **IOUtil**:...
这可能在`CollectionUtil`类中实现。 4. **文件和流操作**:`System.IO`命名空间虽然提供了基本的文件和流操作,但工具类可能提供了更友好的接口,如读写文件、复制移动文件、压缩解压缩文件、处理目录等。 5. **...
3. **集合工具类(CollectionUtil)**:此类通常包含对List、Set、Map等各种集合的操作,如添加元素、删除元素、合并集合、检查是否为空等。例如`isEmpty()`用于判断集合是否为空,`merge()`用于合并两个集合。 4. **...
例如,`CollectionUtil`可能包含`isEmpty(Collection<?> coll)`来检查集合是否为空,或`merge(List<?>... lists)`来合并多个列表。 对于处理中文和拼音,`PinyinUtil`工具类可以帮助转换汉字到拼音,这对于搜索、...
10. **CollectionUtil**:集合操作工具类,用于处理Java的集合框架,如List、Set和Map。它可以实现集合的合并、分割、排序、去重等操作。 11. **JsonUtil**:JSON(JavaScript Object Notation)序列化和反序列化的...
3. **集合工具类**:如`CollectionUtil`,提供对集合的增删查改、遍历、合并、复制等功能。 4. **文件操作工具类**:如`FileUtil`,包括读写文件、创建删除文件夹、文件转换等操作。 5. **网络请求工具类**:如`...