Java-Collection、Map和Array之间的转换
1 List -> Map
设个User类:
public class User {
private String userName;
private String userId;
private String userInfo;
public User(){}
public User(String userName, String userId, String userInfo) {
this.userName = userName;
this.userId = userId;
this.userInfo = userInfo;
}
//getter setter
}
1)foreach()方法
//foreach
public Map<String,User> ltmForEach(List<User> list){
Map<String,User> map = new HashMap<>();
list.forEach(user -> {
map.put(user.getUserId(), user);
});
return map;
}
2)collect()方法
//collect()
public Map<String,User> ltmStream(List<User> list){
/**
* Collectors.toMap()方法参数:
* keyMapper: User::getUserId,调用User的getter方法
* valueMapper: user->user, User类作为value
* mergeFunction: 当key冲突时,value合并的方法:(n1,n2)->n2为替换,(n1,n2)->n1+n2为累加
* mapSupplier: Map构造器,需要返回特定Map的时候使用,如TreeMap::new返回以key排序的Map
*/
return list.stream()
.collect(Collectors.toMap(User::getUserId,user->user,(n1,n2)->n2,TreeMap::new));
}
3)Map常用遍历方法
// 1. 增强for循环
Map<String, User> ltmStreamMap = l.ltmStream(list);
for(Map.Entry entry : ltmStreamMap.entrySet()){
System.out.println(entry.getKey()+" : "+entry.getValue());
}
// 2. Iterator迭代器
Map<String, User> ltmForEachMap = l.ltmForEach(list);
Iterator<Map.Entry<String, User>> iterator = ltmForEachMap.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<String, User> next = iterator.next();
System.out.println(next.getKey()+" : "+next.getValue());
}
// 3. 内循环
Map<String, User> ltmForEachMap = l.ltmForEach(list);
ltmForEachMap.forEach((k,v)->{
System.out.println(k+" : "+v);
});
2 Array -> List
Array指数组类型数据,如:String[]、Object[]、int[]等
一般使用工具类Arrays的asList方法:
public class arrayToList {
public static void main(String[] args) {
String[] strs = new String[]{"a","b","c"};
List<String> list = Arrays.asList(strs);
for(String str : list){
System.out.println(str);
}
}
}
3 List -> Array
集合List转为数组类型Array
通常使用Collection的toArray方法
public class listToArray {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
//List->Array,申请大小为list.size()的数组空间
String[] strs = list.toArray(new String[list.size()]);
}
}
4 Array <-> Set
public class arrayToSet {
public static void main(String[] args) {
/**
* Array数组类型转为Set类型集合
* 需要Array->List->Set
*/
String[] strs = new String[]{"a","b","c"};
Set<String> set = new HashSet<>(Arrays.asList(strs));
/**
* Set转为Array和List转为Array原理相同
*/
strs = set.toArray(new String[set.size()]);
}
}
5 List <-> Set
List和Set都实现了Collection借口,Collection.addAll()方法
相互转换可以通过:
1)Collection.addAll()
2)构造方法直接传入List/Set
/** * List -> Set
*/
Set set = new HashSet(list);//构造传参
set.addAll(list);//Collection.addAll()
/**
* Set -> List
*/
List list = new ArrayList(set);
list.addAll(set);
Java-Collection、Map和Array之间的转换的更多相关文章
- Java-Collection、Map及Array之间的转换
1 List -> Map 设个User类: public class User { private String userName; private String userId; privat ...
- JAVA中list,set,数组之间的转换详解
JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.coll ...
- Java 集合 集合与数组之间的转换
Java 集合 集合与数组之间的转换 @author ixenos 数组转集合 Arrays.asList(T... a) 先给结论:用 Arrays.asList(T... a) 将数组转换成集合 ...
- java中Integer 和String 之间的转换
java中Integer 和String 之间的转换 将数组转换成字符串:char[] array = {'a','b','c','d','e'};String str = new String(ar ...
- Java中字节与对象之间的转换
近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOu ...
- Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
- Java学习--Java 中基本类型和字符串之间的转换
Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...
- Java开发学习--Java 中基本类型和包装类之间的转换
Java 中基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之 ...
- Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套
原文链接:http://www.itjhwd.com/java_json/ 代码 package com.itjh.mmp.util; import java.io.BufferedReader; i ...
随机推荐
- Docker:redis容器使用redis.conf启动失败,不报错
查看redis.conf配置信息 daemonize no :redis默认是不作为守护进程使用的,这也就是说为什么在你不修改配置文件时直接使用redis-server /redis/redis.co ...
- 数据库表的自增ID createDate和updateDate 用JPA注解代替触发器实现
对于数据库表的自增ID , createDate和updateDate 等字段,用JPA注解代替触发器实现,效率会高很多. 由于这些属性很多entity都有 可以写成两个基本entity :BaseE ...
- Java | 方法的定义 & 重载 & 递归
方法 方法就是一段用来完成特定功能的代码片段. 方法用于定义该类或该类的实例的行为特征和功能实现.方法是类和对象行为特征的抽象.在面向对象中,整个程序的基本单位是类,方法是从属于类和对象的. 方法 ...
- java二叉树的遍历(1)
树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合.它是由n(n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合 节点:上图的圆圈,比如A,B,C等都是表示 ...
- VRRP概述作用及配置
文章目录 VRRP的概述 VRRP的作用 虚拟路由器 Master报文的发送 VRRP状态机 VRRP华为命令配置 VRRP的概述1.利用VRRP,一组路由器(同一个LAN中的接口),协同工作,但是只 ...
- deepin安装Motrix,cocomusic
1,motrix(下载工具):https://motrix.app/ 2,cocomusic(开源音乐播放器):https://github.com/xtuJSer/CoCoMusic/release ...
- 42 张图带你撸完 MySQL 优化
Hey guys,这里是程序员cxuan,欢迎你阅读我最新一期的文章,这篇文章是 MySQL 调优的汇总版,我加了一下日常开发过程中的调优经验,希望对各位小伙伴们有所帮助.下面开始正文. 一般传统互联 ...
- Leetcode:530. 二叉搜索树的最小绝对差
Leetcode:530. 二叉搜索树的最小绝对差 Leetcode:530. 二叉搜索树的最小绝对差 Talk is cheap . Show me the code . /** * Definit ...
- 标准化R包开发流程
3个武器: devtools:各种开发小工具的合集,让开发变得简单,非常实用 roxygens:通过注释的方式,生成文档,远离LaTex的烦恼 testthat:单元测试,让R包稳定.健壮.减少升级的 ...
- 每天五分钟Go - 函数基础
函数在定义 Go的函数使用func来定义,返回类型支持多个值的返回 func 函数名([参数列]) [返回值类型]{ 方法执行体 } 参数列支持多个参数的声明,同一类型的函数,声明时和变量的声明一样 ...