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());
- }
- }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持w3xue。