在Java中,数组和集合(List
、Map
、Set
)之间可以通过流(Stream
)进行相互转换。下面列举一些常见的转换操作示例。
基本流程:(过滤器可无,必需的是转stream和收集器)
集合对象.stream().filter(lambda return boolean).collect( Collectors.to你要的集合() );
如果转map的话要传lambda,指定什么当key什么当value
数组的话要用工具类转stream
Arrays.stream( 你的数组 ).filter(lambda return boolean).boxed().collect( Collectors.to你要的集合() );
List
import java.util.Arrays;
import java.util.List;
public class ArrayToList {
public static void main(String[] args) {
String[] array = {"apple", "banana", "cherry"};
// 数组转 List
List list = Arrays.stream(array)
.toList(); // Java 16+ 提供的简洁方法
// 或者使用
// List list = Arrays.asList(array);
System.out.println(list);
}
}
Set
import java.util.Arrays;
import java.util.Set;
import java.util.stream.Collectors;
public class ArrayToSet {
public static void main(String[] args) {
String[] array = {"apple", "banana", "cherry"};
// 数组转 Set
Set set = Arrays.stream(array)
.collect(Collectors.toSet());
System.out.println(set);
}
}
Map
假设数组中的元素是String
类型,可以将其转换为键值对,例如使用字符串的长度作为值:
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
public class ArrayToMap {
public static void main(String[] args) {
String[] array = {"apple", "banana", "cherry"};
// 数组转 Map,键为字符串,值为字符串长度
Map map = Arrays.stream(array)
.collect(Collectors.toMap(
str -> str,
str -> str.length()
));
System.out.println(map);
}
}
List
转数组import java.util.Arrays;
import java.util.List;
public class ListToArray {
public static void main(String[] args) {
List list = Arrays.asList("apple", "banana", "cherry");
// List 转数组
String[] array = list.stream()
.toArray(String[]::new);
System.out.println(Arrays.toString(array));
}
}
Set
转数组import java.util.Set;
import java.util.HashSet;
import java.util.Arrays;
public class SetToArray {
public static void main(String[] args) {
Set set = new HashSet<>(Arrays.asList("apple", "banana", "cherry"));
// Set 转数组
String[] array = set.stream()
.toArray(String[]::new);
System.out.println(Arrays.toString(array));
}
}
List
转Set
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
public class ListToSet {
public static void main(String[] args) {
List list = Arrays.asList("apple", "banana", "cherry", "apple");
// List 转 Set
Set set = list.stream()
.collect(Collectors.toSet());
System.out.println(set);
}
}
Set
转List
import java.util.Set;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import java.util.Arrays;
public class SetToList {
public static void main(String[] args) {
Set set = new HashSet<>(Arrays.asList("apple", "banana", "cherry"));
// Set 转 List
List list = set.stream()
.collect(Collectors.toList());
System.out.println(list);
}
}
Map
转List
(键或值)将Map
中的键或值转换为List
:
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
public class MapToList {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put(1, "apple");
map.put(2, "banana");
map.put(3, "cherry");
// Map 键转 List
List keysList = map.keySet().stream()
.collect(Collectors.toList());
// Map 值转 List
List valuesList = map.values().stream()
.collect(Collectors.toList());
System.out.println("Keys: " + keysList);
System.out.println("Values: " + valuesList);
}
}
Map
转Set
(键或值)将Map
中的键或值转换为Set
:
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.stream.Collectors;
public class MapToSet {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put(1, "apple");
map.put(2, "banana");
map.put(3, "cherry");
// Map 键转 Set
Set keysSet = map.keySet().stream()
.collect(Collectors.toSet());
// Map 值转 Set
Set valuesSet = map.values().stream()
.collect(Collectors.toSet());
System.out.println("Keys: " + keysSet);
System.out.println("Values: " + valuesSet);
}
}
Map
转数组(键或值)将Map
中的键或值转换为数组:
import java.util.Map;
import java.util.HashMap;
import java.util.Arrays;
public class MapToArray {
public static void main(String[] args) {
Map map = new HashMap<>();
map.put(1, "apple");
map.put(2, "banana");
map.put(3, "cherry");
// Map 键转数组
Integer[] keysArray = map.keySet().stream()
.toArray(Integer[]::new);
// Map 值转数组
String[] valuesArray = map.values().stream()
.toArray(String[]::new);
System.out.println("Keys: " + Arrays.toString(keysArray));
System.out.println("Values: " + Arrays.toString(valuesArray));
}
}