Java与Scala创建List与Map的实现方式

网友投稿 359 2022-09-23


Java与Scala创建List与Map的实现方式

目录java与Scala创建List与MapJava自定义map与scala map对比1. 背景2. java代码

Java与Scala创建List与Map

//Java

List languages = new ArrayList<>();

Map 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() http://{

// 使用java来实现scala中针对集合的map、reduce、filter函数的效果

List list = new ArrayList<>();

list.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9));

MyList integers = new MyList(list);

// 使用匿名内部类方式进行自定义map方法调用

List list1 = integers.map(new MyMapFunction() {

@Override

public 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 extends ArrayList {

private List words;

public MyList(Listhttp:// words) {

this.words = words;

}

public List map(MyMapFunction function) {

List ts = new ArrayList<>();

for (T t : words) {

Object map = function.map(t);

ts.add(map);

}

return ts;

}

}

interface MyMapFunction {

// map就是一个转换函数,输入一个K,转换为一个T

T map(K k);

}

2.2 使用jdk的Sream进行函数式处理

private static void test2() {

List list = new ArrayList<>();

list.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9));

// 将list转换为Stream,再进行处理,这时候就可以使用函数式进行处理

Stream integerStream = list.stream();

Stream stringStream = integerStream.map(w -> {

w += 10;

return "" + w;

});

// 遍历打印

Object[] toArray = stringStream.toArray();

for (Object o : toArray) {

System.out.println(o.toString());

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:gns3的安装和详细使用教程(gns3下载教程)
下一篇:华为防火墙查看和调整安全域策略优先级(华为防火墙安全策略配置命令)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~