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之间的转换的更多相关文章

  1. Java-Collection、Map及Array之间的转换

    1 List -> Map 设个User类: public class User { private String userName; private String userId; privat ...

  2. JAVA中list,set,数组之间的转换详解

    JAVA的list,set,数组之间的转换,主要是使用Apache Jakarta Commons Collections,具体的方法如下:import org.apache.commons.coll ...

  3. Java 集合 集合与数组之间的转换

    Java 集合 集合与数组之间的转换 @author ixenos 数组转集合 Arrays.asList(T... a) 先给结论:用 Arrays.asList(T... a) 将数组转换成集合 ...

  4. java中Integer 和String 之间的转换

    java中Integer 和String 之间的转换 将数组转换成字符串:char[] array = {'a','b','c','d','e'};String str = new String(ar ...

  5. Java中字节与对象之间的转换

    近期公司里面用到了消息队列,而正如我们知道的是消息队列之间的是通过二进制形式的.以下就分享一下java中字节与对象之间的转换. 主要是用到了ByteArrayOutputStream和ObjectOu ...

  6. Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  7. Java学习--Java 中基本类型和字符串之间的转换

    Java 中基本类型和字符串之间的转换 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法: 1. 使用包装类的 toString() 方法 2. 使 ...

  8. Java开发学习--Java 中基本类型和包装类之间的转换

    Java 中基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之 ...

  9. Java处理JSON的工具类(List、Map和JSON之间的转换)——依赖jsonlib支持Map嵌套

    原文链接:http://www.itjhwd.com/java_json/ 代码 package com.itjh.mmp.util; import java.io.BufferedReader; i ...

随机推荐

  1. 暑假自学java第四天

    今天学习了类 1,声明并实例化 :类名    对象名  =   new   类名([参数1 ,参数2,....]):例:Car bus =new car (); 2,调用类的方法 :对象名.方法名(参 ...

  2. Java实验项目三——编程实现Person类,学生类的设计及其继承关系

    Program: 编程实现Person类,学生类的设计及其继承关系 代码如下: 定义抽象类Person 1 /* 2 * Description:建立抽象类 3 * 4 * Written By:Ca ...

  3. QT从入门到入土(三)——信号和槽机制

    摘要 信号槽是 Qt 框架引以为豪的机制之一.所谓信号槽,实际就是观察者模式.当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号 (signal).这种发出是没有目的的,类似广播 ...

  4. vue3 script setup 定稿

    vue script setup 已经官宣定稿.本文主要翻译了来自 0040-script-setup 的内容. 摘要 在单文件组件(SFC)中引入一个新的 <script> 类型 set ...

  5. Linux中ftp服务器搭建

    一.FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp ...

  6. "Shortest" pair of paths[题解]

    "Shortest" pair of paths 题目大意 给出 \(n\) 个点,\(m\) 条边,除第一个点和最后一个点外,其他所有的点都只能被经过一次,要求找到两条从第一个点 ...

  7. Jmeter之事务控制器

    性能测试的结果统计时我们一定会关注TPS,TPS代表的是每秒事务数,每个事务对应的是我们的请求.虽然JMeter能够帮我们把每个请求统计成一个事务,但有时候我们希望把多个操作统计成一个事务,JMete ...

  8. hapv-一个可以播放,下载国内主流视频的播放器

    electron 开发的一个可以播放,下载国内主流视频的播放器.A player developed by electron that can play and download domestic m ...

  9. Day3 变量 运算符 及运算符的优先级

    变量 什么是变量: 可以变化的量 Java 是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单位,其要素包括变量名,变量类型,作用域. 注意事项: 每个变量都有类型, 类 ...

  10. sql-2-DDL

    DDL-定义数据库 1.对database操作 1.创建数据库 create database [if not exist] 库名; CREATE DATABASE `shop` CHARACTER ...