Java 使用forEach循环对Map流进行扁平化处理
在Java中给定一个Map流,任务是使用forEach()方法对该流进行扁平化。
例子。
Input: map = {1=[1, 2], 2=[3, 4, 5, 6], 3=[7, 8, 9]}
Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]
Input: map = {1=[G, e, e, k, s], 2=[F, o, r], 3=[G, e, e, k, s]}
Output: [G, e, e, k, s, F, o, r]
Java
建议请先在 {IDE}上尝试你的方法,然后再继续解决
步骤:
- 获取要被扁平化的Map。
- 创建一个空列表来收集扁平化的元素。
- 在forEach循环的帮助下,将Map中的每个元素的值转换成流,并将其添加到列表中
- 这个列表就是所需的扁平化的Map。
下面是上述方法的实现。
例1:使用整数的列表。
// Java program to flatten a stream of map
// using forEach() method
import java.util.*;
import java.util.stream.*;
class GFG {
// Function to flatten a Stream of Map
public static <T> List<T> flattenStream(Collection<List<T> > lists)
{
// Create an empty list to collect the stream
List<T> finalList = new ArrayList<>();
// Using forEach loop
// convert each list into stream
// and add the stream into list
for (List<T> list : lists) {
list.stream()
.forEach(finalList::add);
}
// Return the final flattened list
return finalList;
}
public static void main(String[] args)
{
// Get the map to be flattened.
Map<Integer, List<Integer> > map = new HashMap<>();
map.put(1, Arrays.asList(1, 2));
map.put(2, Arrays.asList(3, 4, 5, 6));
map.put(3, Arrays.asList(7, 8, 9));
// Flatten the Stream
List<Integer> flatList = flattenStream(map.values());
// Print the flattened list
System.out.println(flatList);
}
}
Java
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Java
例2:使用字符列表。
// Java program to flatten a stream of map
// using forEach() method
import java.util.*;
import java.util.stream.*;
class GFG {
// Function to flatten a Stream of Map
public static <T> List<T> flattenStream(Collection<List<T> > lists)
{
// Create an empty list to collect the stream
List<T> finalList = new ArrayList<>();
// Using forEach loop
// convert each list into stream
// and add the stream into list
for (List<T> list : lists) {
list.stream()
.forEach(finalList::add);
}
// Return the final flattened list
return finalList;
}
public static void main(String[] args)
{
// Get the map to be flattened.
Map<Integer, List<Character> > map = new HashMap<>();
map.put(1, Arrays.asList('G', 'e', 'e', 'k', 's'));
map.put(2, Arrays.asList('F', 'o', 'r'));
map.put(3, Arrays.asList('G', 'e', 'e', 'k', 's'));
// Flatten the Stream
List<Character> flatList = flattenStream(map.values());
// Print the flattened list
System.out.println(flatList);
}
}
Java
输出:
[G, e, e, k, s, F, o, r, G, e, e, k, s]
Java