Java與Scala創(chuàng)建List與Map的實現(xiàn)方式
更新時間:2021年10月11日 09:18:21 作者:騎碼找馬
這篇文章主要介紹了Java與Scala創(chuàng)建List與Map的實現(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對比
1. 背景
- 在學(xué)習(xí)scala過程中,不可避免需要將java與scala對比,本文就是基于scala的map,使用java進(jìn)行實現(xiàn)
- jdk1.8中,引入了Stream、lambda表達(dá)式,這讓java也可以支持函數(shù)式編程。
2. java代碼
2.1 自定義實現(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來實現(xiàn)scala中針對集合的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就是一個轉(zhuǎn)換函數(shù),輸入一個K,轉(zhuǎn)換為一個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ù)式進(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());
}
}
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Springmvc DispatcherServlet原理及用法解析
這篇文章主要介紹了Springmvc DispatcherServlet原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09
ThreadPoolExecutor參數(shù)的用法及說明
這篇文章主要介紹了ThreadPoolExecutor參數(shù)的用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
使用Spring boot + jQuery上傳文件(kotlin)功能實例詳解
本文通過實例代碼給大家介紹了使用Spring boot + jQuery上傳文件(kotlin) 功能,需要的朋友可以參考下2017-07-07
Spring中的@PathVariable注解詳細(xì)解析
這篇文章主要介紹了Spring中的@PathVariable注解詳細(xì)解析,@PathVariable 是 Spring 框架中的一個注解,用于將 URL 中的變量綁定到方法的參數(shù)上,它通常用于處理 RESTful 風(fēng)格的請求,從 URL 中提取參數(shù)值,并將其傳遞給方法進(jìn)行處理,需要的朋友可以參考下2024-01-01

