What is the difference between these two objects?

Why do they both exist?

When do I want to use one vs. the other?

解决方案

EDIT: Java Conversions got @deprecated in Scala 2.13.0. Use scala.jdk.CollectionConverters instead.

JavaConversions provide a series of implicit methods that convert between a Java collection and the closest corresponding Scala collection, and vice versa. This is done by creating wrappers that implement either the Scala interface and forward the calls to the underlying Java collection, or the Java interface, forwarding the calls to the underlying Scala collection.

JavaConverters uses the pimp-my-library pattern to “add” the asScala method to the Java collections and the asJava method to the Scala collections, which return the appropriate wrappers discussed above. It is newer (since version 2.8.1) than JavaConversions (since 2.8) and makes the conversion between Scala and Java collection explicit. Contrary to what David writes in his answer, I'd recommend you make it a habit to use JavaConverters as you'll be much less likely to write code that makes a lot of implicit conversions, as you can control the only spot where that will happen: where you write .asScala or .asJava.

Here's the conversion methods that JavaConverters provide:

Pimped Type | Conversion Method | Returned Type

=================================================================================================

scala.collection.Iterator | asJava | java.util.Iterator

scala.collection.Iterator | asJavaEnumeration | java.util.Enumeration

scala.collection.Iterable | asJava | java.lang.Iterable

scala.collection.Iterable | asJavaCollection | java.util.Collection

scala.collection.mutable.Buffer | asJava | java.util.List

scala.collection.mutable.Seq | asJava | java.util.List

scala.collection.Seq | asJava | java.util.List

scala.collection.mutable.Set | asJava | java.util.Set

scala.collection.Set | asJava | java.util.Set

scala.collection.mutable.Map | asJava | java.util.Map

scala.collection.Map | asJava | java.util.Map

scala.collection.mutable.Map | asJavaDictionary | java.util.Dictionary

scala.collection.mutable.ConcurrentMap | asJavaConcurrentMap | java.util.concurrent.ConcurrentMap

—————————————————————————————————————————————————————————————————————————————————————————————————

java.util.Iterator | asScala | scala.collection.Iterator

java.util.Enumeration | asScala | scala.collection.Iterator

java.lang.Iterable | asScala | scala.collection.Iterable

java.util.Collection | asScala | scala.collection.Iterable

java.util.List | asScala | scala.collection.mutable.Buffer

java.util.Set | asScala | scala.collection.mutable.Set

java.util.Map | asScala | scala.collection.mutable.Map

java.util.concurrent.ConcurrentMap | asScala | scala.collection.mutable.ConcurrentMap

java.util.Dictionary | asScala | scala.collection.mutable.Map

java.util.Properties | asScala | scala.collection.mutable.Map[String, String]

To use the conversions directly from Java, though, you're better off calling methods from JavaConversions directly; e.g.:

List javaList = new ArrayList(Arrays.asList("a", "b", "c"));

System.out.println(javaList); // [a, b, c]

Buffer scalaBuffer = JavaConversions.asScalaBuffer(javaList);

System.out.println(scalaBuffer); // Buffer(a, b, c)

List javaListAgain = JavaConversions.bufferAsJavaList(scalaBuffer);

System.out.println(javaList == javaListAgain); // true

java建一个conversion,Scala中的JavaConverters和JavaConversions有什么区别?相关推荐

  1. c语言中的typedef struct相当于java的一个类?,C ++中'struct'和'typedef struct'之间的区别?...

    在C ++中,之间有什么区别: struct Foo { ... }; 和 typedef struct { ... } Foo; #1楼 您不能对typedef结构使用forward声明. stru ...

  2. java e.getmessage() null,浅谈Java异常的Exception e中的egetMessage()和toString()方法的区别...

    Exception e中e的getMessage()和toString()方法的区别: 示例代码1: public class TestInfo { private static String str ...

  3. java建一个conversion_Scala中的JavaConverters和JavaConversions之间有什么区别?

    JavaConversions 提供了一系列隐式方法,可以在Java集合和最接近的相应Scala集合之间进行转换,反之亦然 . 这是通过创建实现Scala接口的包装器并将调用转发到底层Java集合或J ...

  4. java equals equalsignorecase 性能_JAVA中字符串比较equals()和equalsIgnoreCase()的区别

    JAVA中字符串比较equals()和equalsIgnoreCase()的区别 1.使用equals( )方法比较两个字符串是否相等.它具有如下的一般形式: boolean equals(Objec ...

  5. java定义一个静态类_Java中的静态类

    在java中有类似的静态类的类吗? 静态类的定义是什么.静态类的所有方法都需要是静态的吗? 是否需要相反的方式,如果一个类包含所有的静态方法,类应该是静态的? 静态类有什么好处? 回答: Java有静 ...

  6. java date 一个月_java中的日期加一个月的计算

    Homepage URL http://flysky-1.at.vwdhosting.net FTP server name: ftp://flysky-1@ftp6.vwdhosting.net L ...

  7. java 建一个car_大学java习题 :定义一个汽车类car

    满意答案 kokoboy521 推荐于 2017.09.05 采纳率:51%    等级:10 已帮助:666人 public class Car { private String brand; pr ...

  8. 用java建一个类_利用JAVA创建一个类。

    慕姐829404 123456789101112131415package com.test;public class TestTrapezia   {    public static void m ...

  9. java 基本类型 引用类型_Java中的基本类型和引用类型变量的区别

    基本类型: 基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值. 引用类型: 是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组 ...

最新文章

  1. HTML5新特性---Form表单前台通过正则表达式自动验证邮箱
  2. js kettle 设置变量_kettle与钉钉结合的企业内部应用扩展01
  3. Java 流(Stream)、文件(File)和IO -- Java ByteArrayOutputStream类
  4. 091_类数组对象转为数组
  5. Java基础学习网站收藏
  6. python 扫盲系列(1)
  7. 人能为赚钱吃多少苦?
  8. 微信小程序scroll-view去除滚动条 (安卓、ios都有效)
  9. 实用js小汇总--获取服务器控件ID
  10. 猜数字游戏(Java源代码)
  11. android组件化解耦,android module解耦组件化总体概述
  12. 1w字详解 ClickHouse漏斗模型实践方案(收藏)
  13. 打开GTA 5竟要跑19.8亿次if语句!黑客嘲讽R星代码烂,修改后直接省70%加载时间
  14. 上海怎样查询最近三年社保明细
  15. 小旋风虚拟服务器怎么用,小旋风aspweb服务器该怎么使用
  16. 洛谷P1034矩形覆盖题解--zhengjun
  17. TCGA数据库学习一:基本知识
  18. CocoaPods的使用--
  19. 如何在内存中执行二进制代码之win平台
  20. LZ4 和 LZMA 压缩算法针对不同格式的压缩比数据测试

热门文章

  1. 三圆相交阴影部分面积_这题要证明圆的切线并求阴影面积,分割图形求面积法是解题关键...
  2. Third-generation sequencing and the future of genomics 第三代测序和基因组学的未来
  3. c++代码转为go_Go与C/C++ 互相调用
  4. 去水印--《On the Effectiveness of Visible Watermarks》
  5. Linux安装HDF5及遇到的问题总结
  6. LeetCode 445. Add Two Numbers II--面试算法题--C++,Python解法
  7. LeetCode 85. Maximal Rectangle --python,java解法
  8. java 数字转26个字母和26个字母转数字
  9. oracle 游标 内联,oracle – EXEC_SQL,EXECUTE IMMEDIATE,DBMS_SQL和内联SQL之间的区别
  10. SpringBoot获取请求的参数