Java與Scala創(chuàng)建List與Map的實(shí)現(xiàn)方式
Java與Scala創(chuàng)建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對(duì)比
1. 背景
- 在學(xué)習(xí)scala過(guò)程中,不可避免需要將java與scala對(duì)比,本文就是基于scala的map,使用java進(jìn)行實(shí)現(xiàn)
- jdk1.8中,引入了Stream、lambda表達(dá)式,這讓java也可以支持函數(shù)式編程。
2. java代碼
2.1 自定義實(shí)現(xiàn)的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來(lái)實(shí)現(xiàn)scala中針對(duì)集合的map、reduce、filter函數(shù)的效果 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); // 使用匿名內(nèi)部類方式進(jìn)行自定義map方法調(diào)用 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就是一個(gè)轉(zhuǎn)換函數(shù),輸入一個(gè)K,轉(zhuǎn)換為一個(gè)T <T, K> T map(K k); }
2.2 使用jdk的Sream進(jìn)行函數(shù)式處理
private static void test2() { List<Integer> list = new ArrayList<>(); list.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9)); // 將list轉(zhuǎn)換為Stream,再進(jìn)行處理,這時(shí)候就可以使用函數(shù)式進(jìn)行處理 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()); } }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springmvc DispatcherServlet原理及用法解析
這篇文章主要介紹了Springmvc DispatcherServlet原理及用法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09ThreadPoolExecutor參數(shù)的用法及說(shuō)明
這篇文章主要介紹了ThreadPoolExecutor參數(shù)的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03通過(guò)實(shí)例了解Spring中@Profile的作用
這篇文章主要介紹了通過(guò)實(shí)例了解Spring中@Profile的作用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Java反射機(jī)制,如何將一個(gè)實(shí)體類所有字段賦值為null
這篇文章主要介紹了Java反射機(jī)制,如何將一個(gè)實(shí)體類所有字段賦值為null,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03java 實(shí)現(xiàn)增量同步和自定義同步的操作
這篇文章主要介紹了java 實(shí)現(xiàn)增量同步和自定義同步的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01使用Spring boot + jQuery上傳文件(kotlin)功能實(shí)例詳解
本文通過(guò)實(shí)例代碼給大家介紹了使用Spring boot + jQuery上傳文件(kotlin) 功能,需要的朋友可以參考下2017-07-07Spring中的@PathVariable注解詳細(xì)解析
這篇文章主要介紹了Spring中的@PathVariable注解詳細(xì)解析,@PathVariable 是 Spring 框架中的一個(gè)注解,用于將 URL 中的變量綁定到方法的參數(shù)上,它通常用于處理 RESTful 風(fēng)格的請(qǐng)求,從 URL 中提取參數(shù)值,并將其傳遞給方法進(jìn)行處理,需要的朋友可以參考下2024-01-01