数组,集合流式互转

2024-09-01 06:44
文章标签 数组 集合 互转 流式

本文主要是介绍数组,集合流式互转,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Java中,数组和集合(ListMapSet)之间可以通过流(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你要的集合() );

1. 数组转List

import java.util.Arrays;
import java.util.List;public class ArrayToList {public static void main(String[] args) {String[] array = {"apple", "banana", "cherry"};// 数组转 ListList<String> list = Arrays.stream(array).toList(); // Java 16+ 提供的简洁方法// 或者使用// List<String> list = Arrays.asList(array);System.out.println(list);}
}

2. 数组转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"};// 数组转 SetSet<String> set = Arrays.stream(array).collect(Collectors.toSet());System.out.println(set);}
}

3. 数组转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<String, Integer> map = Arrays.stream(array).collect(Collectors.toMap(str -> str, str -> str.length()));System.out.println(map);}
}

4. List转数组

import java.util.Arrays;
import java.util.List;public class ListToArray {public static void main(String[] args) {List<String> list = Arrays.asList("apple", "banana", "cherry");// List 转数组String[] array = list.stream().toArray(String[]::new);System.out.println(Arrays.toString(array));}
}

5. Set转数组

import java.util.Set;
import java.util.HashSet;
import java.util.Arrays;public class SetToArray {public static void main(String[] args) {Set<String> set = new HashSet<>(Arrays.asList("apple", "banana", "cherry"));// Set 转数组String[] array = set.stream().toArray(String[]::new);System.out.println(Arrays.toString(array));}
}

6. ListSet

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<String> list = Arrays.asList("apple", "banana", "cherry", "apple");// List 转 SetSet<String> set = list.stream().collect(Collectors.toSet());System.out.println(set);}
}

7. SetList

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<String> set = new HashSet<>(Arrays.asList("apple", "banana", "cherry"));// Set 转 ListList<String> list = set.stream().collect(Collectors.toList());System.out.println(list);}
}

8. MapList(键或值)

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<Integer, String> map = new HashMap<>();map.put(1, "apple");map.put(2, "banana");map.put(3, "cherry");// Map 键转 ListList<Integer> keysList = map.keySet().stream().collect(Collectors.toList());// Map 值转 ListList<String> valuesList = map.values().stream().collect(Collectors.toList());System.out.println("Keys: " + keysList);System.out.println("Values: " + valuesList);}
}

9. MapSet(键或值)

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<Integer, String> map = new HashMap<>();map.put(1, "apple");map.put(2, "banana");map.put(3, "cherry");// Map 键转 SetSet<Integer> keysSet = map.keySet().stream().collect(Collectors.toSet());// Map 值转 SetSet<String> valuesSet = map.values().stream().collect(Collectors.toSet());System.out.println("Keys: " + keysSet);System.out.println("Values: " + valuesSet);}
}

10. Map转数组(键或值)

Map中的键或值转换为数组:

import java.util.Map;
import java.util.HashMap;
import java.util.Arrays;public class MapToArray {public static void main(String[] args) {Map<Integer, String> 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));}
}

这篇关于数组,集合流式互转的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126238

相关文章

hdu2241(二分+合并数组)

题意:判断是否存在a+b+c = x,a,b,c分别属于集合A,B,C 如果用暴力会超时,所以这里用到了数组合并,将b,c数组合并成d,d数组存的是b,c数组元素的和,然后对d数组进行二分就可以了 代码如下(附注释): #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<que

hdu 1166 敌兵布阵(树状数组 or 线段树)

题意是求一个线段的和,在线段上可以进行加减的修改。 树状数组的模板题。 代码: #include <stdio.h>#include <string.h>const int maxn = 50000 + 1;int c[maxn];int n;int lowbit(int x){return x & -x;}void add(int x, int num){while

uva 11178 计算集合模板题

题意: 求三角形行三个角三等分点射线交出的内三角形坐标。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vector>#include <

C语言:柔性数组

数组定义 柔性数组 err int arr[0] = {0}; // ERROR 柔性数组 // 常见struct Test{int len;char arr[1024];} // 柔性数组struct Test{int len;char arr[0];}struct Test *t;t = malloc(sizeof(Test) + 11);strcpy(t->arr,

C 语言基础之数组

文章目录 什么是数组数组变量的声明多维数组 什么是数组 数组,顾名思义,就是一组数。 假如班上有 30 个同学,让你编程统计每个人的分数,求最高分、最低分、平均分等。如果不知道数组,你只能这样写代码: int ZhangSan_score = 95;int LiSi_score = 90;......int LiuDong_score = 100;int Zhou

计算数组的斜率,偏移,R2

模拟Excel中的R2的计算。         public bool fnCheckRear_R2(List<double[]> lRear, int iMinRear, int iMaxRear, ref double dR2)         {             bool bResult = true;             int n = 0;             dou

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

Java基础回顾系列-第六天-Java集合

Java基础回顾系列-第六天-Java集合 集合概述数组的弊端集合框架的优点Java集合关系图集合框架体系图java.util.Collection接口 List集合java.util.List接口java.util.ArrayListjava.util.LinkedListjava.util.Vector Set集合java.util.Set接口java.util.HashSetjava

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

PHP7扩展开发之数组处理

前言 这次,我们将演示如何在PHP扩展中如何对数组进行处理。要实现的PHP代码如下: <?phpfunction array_concat ($arr, $prefix) {foreach($arr as $key => $val) {if (isset($prefix[$key]) && is_string($val) && is_string($prefix[$key])) {$arr[