Java与Scala创建List与Map的实现方式
更新时间:2021年10月11日 09:18:21 作者:骑码找马
这篇文章主要介绍了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()); } }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
JAVA面试题 简谈你对synchronized关键字的理解
这篇文章主要介绍了JAVA面试题 请谈谈你对Sychronized关键字的理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-07-07Springboot整合RabbitMq测试TTL的方法详解
这篇文章主要介绍了Springboot整合RabbitMq测试TTL的设置,设置TTL一般由两种设置方法,设置整个队列的过期时间另一种设置单个消息的过期时间,通过示例图文相结合给大家介绍的非常详细,需要的朋友可以参考下2022-03-03Springboot中@ConfigurationProperties轻松管理应用程序的配置信息详解
通过@ConfigurationProperties注解,可以将外部配置文件中的属性值注入到JavaBean中,简化了配置属性的读取和管理,这使得SpringBoot应用程序中配置文件的属性值可以映射到POJO类中,实现类型安全的属性访问,此方法避免了手动读取配置文件属性的需要2024-10-10Java中通过ZipOutputStream类如何将多个文件打成zip
ZipOutputStream 是Java中用于创建ZIP文件的类,它是 java.util.zip 包中的一部分,通过使用 ZipOutputStream ,可以将多个文件压缩到一个ZIP文件中,这篇文章主要介绍了Java中(ZipOutputStream)如何将多个文件打成zip,需要的朋友可以参考下2023-09-09Spring Boot 配置文件类型properties 格式与yml 格式
这篇文章主要介绍了Spring Boot 配置文件类型properties 格式与yml 格式,文章围绕主题展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下2022-05-05
最新评论