Java与Scala创建List与Map的实现方式
作者:骑码找马 时间:2021-07-19 23:53:07
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());
}
}
来源:https://blog.csdn.net/weixin_42034217/article/details/99579822
标签:Java,Scala,List,Map
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
详解SpringBoot定制@ResponseBody注解返回的Json格式
2023-07-26 13:47:02
Java基础学习之集合底层原理
2023-09-30 22:16:40
![](https://img.aspxhome.com/file/2023/0/86820_0s.png)
DUCC配置平台实现一个动态化线程池示例代码
2023-11-28 12:07:39
![](https://img.aspxhome.com/file/2023/4/60354_0s.png)
浅谈JAVA中输入输出流实例详解
2022-10-21 05:20:57
![](https://img.aspxhome.com/file/2023/1/81881_0s.png)
java开发微信分享接口的步骤
2021-08-22 12:30:59
![](https://img.aspxhome.com/file/2023/2/61652_0s.png)
Java的外部类为什么不能使用private和protected进行修饰的讲解
2023-06-29 00:45:57
DataGridView不显示最下面的新行、判断新增行、删除行操作
2022-11-26 16:14:36
spring cloud config 配置中心快速实现过程解析
2022-02-19 06:50:22
openFeign服务之间调用保持请求头信息处理方式
2022-11-07 23:45:21
SpringBoot浅析Redis访问操作使用
2022-09-26 02:09:18
![](https://img.aspxhome.com/file/2023/4/80314_0s.png)
分享Java多线程实现的四种方式
2022-02-23 06:34:21
在IDEA里gradle配置和使用的方法步骤
2023-11-23 16:07:58
![](https://img.aspxhome.com/file/2023/1/59851_0s.png)
详解AndroidStudio JNI +Gradle3.0以上JNI爬坑之旅
2021-09-01 05:45:04
![](https://img.aspxhome.com/file/2023/2/88102_0s.jpg)
利用Distinct()内置方法对List集合的去重问题详解
2023-01-31 00:45:30
在实践中了解Java反射机制应用
2021-06-29 02:40:14
Java中五种不同方法的创建对象
2021-07-25 01:11:37
Android自定义软键盘的设计与实现代码
2023-12-19 11:57:01
![](https://img.aspxhome.com/file/2023/0/99790_0s.jpg)
基于C#实现端口扫描器(单线程和多线程)
2021-10-16 20:32:23
![](https://img.aspxhome.com/file/2023/4/94544_0s.jpg)
关于eclipse安装spring插件报错An error occurred while collecting items to be installed...解决方案
2023-05-27 03:34:45
![](https://img.aspxhome.com/file/2023/1/78351_0s.png)
Java中IO流文件读取、写入和复制的实例
2023-08-12 03:23:29