Java与Scala创建List与Map
1 2 3 4 5 6 7 |
//Java List<String> languages = new ArrayList<>(); Map<String, Class> mapFields = new HashMap();
//Scala val languages = new util.ArrayList[String] val mapFields= new util.HashMap[String, Class] |
Java自定义map与scala map对比
1. 背景
在学习scala过程中,不可避免需要将java与scala对比,本文就是基于scala的map,使用java进行实现 jdk1.8中,引入了Stream、lambda表达式,这让java也可以支持函数式编程。
2. java代码
2.1 自定义实现的map
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
package com.doit.udf; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * @author hulc * @slogan: just do it * @date 2020/9/13 21:16 */ public class UserDefineFunc { public static void main(String[] args) { test1(); } private static void test1() { // 使用java来实现scala中针对集合的map、reduce、filter函数的效果 List<Integer> list = new ArrayList<>(); list.addAll(Arrays.asList( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 )); MyList<Integer> integers = new MyList<Integer>(list); // 使用匿名内部类方式进行自定义map方法调用 List<Object> list1 = integers.map( new MyMapFunction() { @Override public <String, K> String map(K k) { if (k instanceof Integer) { Integer i = (Integer) k; i += 10 ; return (String) ( "" + i); } return null ; } }); for (Object o : list1) { System.out.println(o.toString()); } } } class MyList<T> extends ArrayList<T> { private List<T> words; public MyList(List<T> words) { this .words = words; } public List<Object> map(MyMapFunction function) { List<Object> ts = new ArrayList<>(); for (T t : words) { Object map = function.map(t); ts.add(map); } return ts; } } interface MyMapFunction { // map就是一个转换函数,输入一个K,转换为一个T <T, K> T map(K k); } |
2.2 使用jdk的Sream进行函数式处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private static void test2() { List<Integer> list = new ArrayList<>(); list.addAll(Arrays.asList( 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 )); // 将list转换为Stream,再进行处理,这时候就可以使用函数式进行处理 Stream<Integer> integerStream = list.stream(); Stream<String> stringStream = integerStream.map(w -> { w += 10 ; return "" + w; }); // 遍历打印 Object[] toArray = stringStream.toArray(); for (Object o : toArray) { System.out.println(o.toString()); } } |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
原文链接:https://blog.csdn.net/weixin_42034217/article/details/99579822
查看更多关于Java与Scala创建List与Map的实现方式的详细内容...