纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

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

骑码找马   2021-10-11 我要评论
想了解Java与Scala创建List与Map的实现方式的相关内容吗,骑码找马在本文为您仔细讲解Java Scala创建List与Map的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Java创建List,Java创建Map,Scala创建List,Scala创建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());
        }
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。


相关文章

猜您喜欢

网友评论

Copyright 2020 www.freemmogames.net 【漫漫下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式