经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Scala » 查看文章
Java与Scala创建List与Map的实现方式
来源:jb51  时间:2021/10/11 10:23:36  对本文有异议

Java与Scala创建List与Map

  1. //Java
  2. List<String> languages = new ArrayList<>();
  3. Map<String, Class> mapFields = new HashMap();
  4. //Scala
  5. val languages = new util.ArrayList[String]
  6. 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

  1. package com.doit.udf;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. /**
  6. * @author hulc
  7. * @slogan: just do it
  8. * @date 2020/9/13 21:16
  9. */
  10. public class UserDefineFunc {
  11. public static void main(String[] args) {
  12. test1();
  13. }
  14. private static void test1() {
  15. // 使用java来实现scala中针对集合的map、reduce、filter函数的效果
  16. List<Integer> list = new ArrayList<>();
  17. list.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9));
  18. MyList<Integer> integers = new MyList<Integer>(list);
  19. // 使用匿名内部类方式进行自定义map方法调用
  20. List<Object> list1 = integers.map(new MyMapFunction() {
  21. @Override
  22. public <String, K> String map(K k) {
  23. if (k instanceof Integer) {
  24. Integer i = (Integer) k;
  25. i += 10;
  26. return (String) ("" + i);
  27. }
  28. return null;
  29. }
  30. });
  31. for (Object o : list1) {
  32. System.out.println(o.toString());
  33. }
  34. }
  35. }
  36. class MyList<T> extends ArrayList<T> {
  37. private List<T> words;
  38. public MyList(List<T> words) {
  39. this.words = words;
  40. }
  41. public List<Object> map(MyMapFunction function) {
  42. List<Object> ts = new ArrayList<>();
  43. for (T t : words) {
  44. Object map = function.map(t);
  45. ts.add(map);
  46. }
  47. return ts;
  48. }
  49. }
  50. interface MyMapFunction {
  51. // map就是一个转换函数,输入一个K,转换为一个T
  52. <T, K> T map(K k);
  53. }

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

  1. private static void test2() {
  2. List<Integer> list = new ArrayList<>();
  3. list.addAll(Arrays.asList(1,2,3,4,5,6,7,8,9));
  4. // 将list转换为Stream,再进行处理,这时候就可以使用函数式进行处理
  5. Stream<Integer> integerStream = list.stream();
  6. Stream<String> stringStream = integerStream.map(w -> {
  7. w += 10;
  8. return "" + w;
  9. });
  10. // 遍历打印
  11. Object[] toArray = stringStream.toArray();
  12. for (Object o : toArray) {
  13. System.out.println(o.toString());
  14. }
  15. }

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号