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
0
投稿

猜你喜欢

  • Android开发之imageView图片按比例缩放的实现方法

    2023-01-09 21:52:51
  • Spring Security权限管理实现接口动态权限控制

    2022-07-03 12:25:53
  • mybatis-plus查询源码详解

    2023-02-02 11:58:02
  • Android studio中生成引用.aar和.jar的方法详解

    2023-09-29 07:48:33
  • Java使用Redis实现秒杀功能

    2023-04-11 11:26:54
  • Spring boot + mybatis + Vue.js + ElementUI 实现数据的增删改查实例代码(一)

    2021-12-29 08:15:07
  • Java深入讲解instanceof关键字的使用

    2023-02-27 13:05:05
  • JDBC SQL语法

    2022-03-09 02:32:10
  • Spring Boot热加载jar实现动态插件的思路

    2021-09-25 16:37:55
  • Java如何实现自定义异常类

    2023-06-21 23:44:01
  • mybatis映射和实际类型不一致的问题

    2023-08-13 18:09:06
  • 深入理解Java设计模式之抽象工厂模式

    2023-11-28 12:11:34
  • C#微信开发(服务器配置)

    2023-07-18 17:42:01
  • Java中的引用类型和使用场景详细

    2023-11-29 03:58:19
  • mybatis-plus 扩展批量新增的实现

    2023-07-14 14:24:13
  • Java编程经典小游戏设计-打砖块小游戏源码

    2021-07-08 01:17:28
  • c# 获得局域网主机列表实例

    2022-07-12 21:46:58
  • C语言数据结构之二叉树的非递归后序遍历算法

    2021-12-23 07:10:52
  • IDEA2022创建Maven Web项目教程(图文)

    2022-09-25 02:30:44
  • Android系列---JSON数据解析的实例

    2022-07-04 19:52:50
  • asp之家 软件编程 m.aspxhome.com