Java與Scala創建List與Map的實現方式
Java與Scala創建List與Map
//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
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進行函數式處理
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()); } }
以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。
推薦閱讀:
- java.lang.ArrayStoreException異常的解決方案
- java與scala數組及集合的基本操作對比
- java中Map、Set、List的簡單使用教程(快速入門)
- Java Stream流零基礎教程
- Java和Scala集合間的相互轉換方式