Map转换为List
背景:想将map转换成list,便于顺序执行map中的function。
结果:没有成功,下面主要记录了将map转换成list的方法。
学习点:
1、funtion的结果变成了hashcode,未得到想要的结果,但是函数被执行了,具体不清楚函数执行的时间是否是自己预期的;
2、list的打印:list.forEach(System.out :: println);
3、熟悉匿名函数用法;
4、stream().collect(Collectors.toList())的使用,只能选择key或者value二者其一进行转换,不能选择EntrySet进行转换。(在map的function中没有成功)
三种Map:包含 Map<String, Function<?, ?>>, Map<Integer, String>,stream
1、Map<String, Function<?, ?>>
package CSDN;
import java.util.*;
import java.util.function.Function;
/** * 2021/12/8 22:15 */
public class MapToList {
public static void main(String[] args) {
// 包含匿名方法的map转换成list,结果是hashCode(猜测是)
Map<String, Function<Integer, Void>> funMap = mapIncludeFun();
List<Function<Integer, Void>> listFun = new ArrayList<>();
for (Map.Entry<String, Function<Integer, Void>> map : funMap.entrySet()) {
listFun.add(map.getValue());
}
listFun.forEach(System.out :: println);
}
/** * map中包含Function * * @return map */
private static Map<String, Function<Integer, Void>> mapIncludeFun() {
Map<String, Function<Integer, Void>> mapFun = new HashMap<>();
mapFun.put("a", test_a);
mapFun.put("c", test_c);
mapFun.put("d", test_c);
return mapFun;
}
/** * 包含Function Map的匿名函数 */
private static final Function<Integer, Void> test_a = (Integer num) -> {
System.out.println("测试函数a:" + num);
return null;
};
/** * 包含Function Map的匿名函数 */
private static final Function<Integer, Void> test_c = (Integer num) -> {
System.out.println("测试函数c:" + num);
return null;
};
}
结果:1、
CSDN.MapToList$$Lambda$1/931919113@6acbcfc0
CSDN.MapToList$$Lambda$2/381259350@5f184fc6
CSDN.MapToList$$Lambda$2/381259350@5f184fc6
2、Map<Integer, String>
package CSDN;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** * 2021/12/8 22:15 */
public class MapToList2 {
public static void main(String[] args) {
// 只包含简单的包装类的map转换成list,结果OK
Map<Integer, String> simpleMap = simpleMap();
List<String> list = new ArrayList<>();
for (Map.Entry<Integer, String> map : simpleMap.entrySet()) {
list.add(map.getValue());
}
list.forEach(System.out :: println);
}
/** * map中不包含函数,只包含常见的包装类 * * @return map */
private static Map<Integer, String> simpleMap() {
Map<Integer, String> map = new HashMap<>();
map.put(3, "xiaoping");
map.put(9, "小铃铛");
return map;
}
}
结果:2、
xiaoping
小铃铛
3、map转换成list,使用stream
package CSDN;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** * 2021/12/8 22:15 */
public class MapToList3 {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<>();
map.put(3, "liming");
map.put(12, "热忱");
List<Integer> list = new ArrayList(map.keySet());
list.forEach(System.out :: println);
// 3
// 12
List<String> list1 = new ArrayList(map.values());
list1.forEach(System.out :: println);
// liming
// 热忱
List<Integer> list3 = map.keySet().stream().collect(Collectors.toList());
list3.forEach(System.out :: println);
// 3
// 12
List<String> list4 = map.values().stream().collect(Collectors.toList());
list4.forEach(System.out :: println);
// liming
// 热忱
List<String> list5 = map.values().stream()
.filter(x -> !"liming".equalsIgnoreCase(x))
.collect(Collectors.toList());
list5.forEach(System.out :: println);
// 热忱
}
}