有时,当我对JavaScript的强大功能和表现力感到兴奋时,我发现自己错过了Java世界中的一两个功能。 除了lambda表达式/闭包或任何您想称为“匿名函数”的东西之外,它还对数组,数组,列表,集合,映射等常见数据类型使用了高级文字。在JavaScript中,没有人会考虑构造一个这样的常量映射:

var map = new Object();
map["a"] = 1;
map["b"] = 2;
map["c"] = 3;

相反,您可能会写

var map = { "a":1, "b":2, "c":3 };

具体来说,当将复杂参数传递给API函数时,这实际上是一种非常方便的语法。

Java中的这些东西呢?

我最近发布了一种解决方法,您可以在这里使用Arrays.asList(…)创建“列表文字”:

http://blog.jooq.org/2011/10/28/javas-arrays-aslist-is-underused/

这样就可以了。 在分配数组时,还可以使用数组文字构造数组。 但是您不能将数组文字传递给方法:

// This will work:
int[] array = { 1, 2, 3 };// This won't:
class Test {public void callee(int[] array) {}public void caller() {// Compilation error here:callee({1, 2, 3});}
}

Brian Goetz在lambda-dev上提到了各种文字

错过了很长一段时间后,我很高兴阅读lambda-dev邮件列表中的Brian Goetz关于它们的提及:

http://mail.openjdk.java.net/pipermail/lambda-dev/2012-May/004979.html

他列出的想法是:

#[ 1, 2, 3 ]                          // Array, list, set
#{ "foo" : "bar", "blah" : "wooga" }  // Map literals
#/(\d+)$/                             // Regex
#(a, b)                               // Tuple
#(a: 3, b: 4)                         // Record
#"There are {foo.size()} foos"        // String literal

不幸的是,他还添加了以下免责声明:

并不是说我们会立即(或永远)拥抱所有这些

显然,在Java 8当前Java语言发展的现阶段,他不能保证将来会增加什么。 但是从jOOQ的角度来看,能够声明元组和记录文字(具有适当的支持语言的支持,支持这种类型!)的想法非常令人激动。 想象一下选择任意元组/记录及其关联的索引/类型,列/类型对。 想象一下在Java或Scala中这样的构造(使用jOOQ):

// For simplicity, I'm using Scala's val operator here,
// indicating type inference. It's hard to guess what true
// record support in the java language should look like
for (val record : create.select(BOOK.AUTHOR_ID.as("author"), count().as("books")).from(BOOK).groupBy(BOOK.AUTHOR_ID).fetch()) {// With true record support, you could now formally extract// values from the result set being iterated on. In other// words, the formal column alias and type is available to// the compiler:int author = record.author;int books = record.books;
}

显然,这只是推测,但是您可以看到,由于Java语言具有真正的元组/记录支持,因此Java Universe中将释放许多功能,这对所有现有的库和API都有很大的影响

敬请关注!

参考: Java,SQL和AND JOOQ博客上的JCG合作伙伴 Lukas Eder 用Java数组,列表,设置,映射,元组和记录文字 。

翻译自: https://www.javacodegeeks.com/2012/06/array-list-set-map-tuple-record.html

Java中的数组,列表,集合,映射,元组,记录文字相关推荐

  1. Java基础之数组与集合

    Java基础之数组与集合 一.数组 二.冒泡排序算法 三.选择排序算法 四.二维数组 五.Arrays 工具 六.宠物管理系统 七.集合 Collection 八.List 九.重写 equals 方 ...

  2. Java中的数组数据结构需要了解的要点

    首先,数组是Java中的对象.它们不是像int.short或long这样的基本类,也不是具有很多方法的全功能对象,但由于它们是对象,所以它们隐式地扩展了Object,这就是为什么可以使用数组引用(例如 ...

  3. java javascript数组_浅谈javascript和java中的数组

    javascript中的数组 数组的创建 直接创建方式  var str = ['java', 'js']; 使用new创建方式: var a = new Array(10);  //  定义长度为1 ...

  4. Java中的数组和Arrays工具类

    数组 数组的特点 Java语言中的数组不属于基本数据类型而是引用数据类型 , 所以数组对象是在堆内存当中存储的 , 数组的父类是Object 数组是一个数据的集合 , 本质是一个容器可以存储" ...

  5. Java中遍历数组使用foreach循环还是for循环?

    这篇文章主要介绍了Java中遍历数组使用foreach循环还是for循环?本文着重讲解for语句的语法并给出使用实例,同时总结出尽量使用foreach语句遍历数组,需要的朋友可以参考下 从JDK1.5 ...

  6. java面试题24 关于Java中的数组,

    java面试题24 关于Java中的数组,下面的一些描述,哪些描述是准确的:(        ) A 数组是一个对象,不同类型的数组具有不同的类 B 数组长度是可以动态调整的 C 数组是一个连续的存储 ...

  7. java中的数组长度的计算

    讲到了java中数组的长度的计算,那就是少不了了那个java中的数组的定义. int a[]=new int[5]; String[]str=new String[]; String[]str=new ...

  8. Java中的数组Array

    1.数组的基本性质: ①java语言中的数组是一种引用数据类型,不属于基本数据类型,数组的父类是Object. ②数组实际上是一个容器,可以同时容纳多个元素(数组是一个数据的集合).数组中每一个元 素 ...

  9. scala中打印数组和集合_如何在Scala中打印数组?

    scala中打印数组和集合 Scala中的数组 (Array in Scala) In Scala, Array is a data structure that is a collection of ...

  10. Java中的数组与List相互转换的方法分析

    目录 一.Java中的数组转换为List的方法 1.使用Arrays.asList()方法 2.使用Collections.addAll()方法 3.使用集合的addAll()方法 4.使用Sprin ...

最新文章

  1. python 列表有几个元素_python怎么向列表中添加多个元素
  2. 什么,PyTorch还能开发新药?哈佛推出这款工具包,10行代码训练“药神”模型...
  3. Apache 编译安装
  4. Spring Boot如何初始化数据
  5. s3c44b0x开发板之BOOT ROM配置
  6. manually create IBASE 03 in CRM
  7. 32 MM配置-采购-采购订单-定义编码范围
  8. 【Next Permutation】cpp
  9. USACO3.1.1最短网络
  10. TensorFlow 的简化接口Scikit Flow
  11. 12.第二节 SAPI概述
  12. echarts实现半圆饼图
  13. word2vec是如何得到词向量的?
  14. 阿里企业邮箱产品优势、功能、版本介绍
  15. 到大观园晨光茶社现场听了场相声
  16. Tautology (logic)介绍
  17. linux远程利用漏洞CVE-2016-4484 93次空密码重试就可以获得root权限 影响大多数Linux版本...
  18. SSM毕设项目毕业生就业推荐平台s0m59(java+VUE+Mybatis+Maven+Mysql)
  19. originPro导出图像的关键设置
  20. mysql left join like_使用LEFT JOIN和LIKE mysql

热门文章

  1. 转:微服务架构:BFF和网关是如何演化出来的?(这篇文章相当棒)
  2. r中rep_Spring中@ Component,@ Service,@ Controller和@Repository之间的区别
  3. 逻辑建模与物理建模_架构层和建模域逻辑
  4. kata_小规模流处理kata。 第1部分:线程池
  5. java 观察者模式示例_观察者设计模式示例
  6. java fix_Java中的低延迟FIX引擎
  7. 雅加达EE:干净的板岩
  8. HTTP缓存与Spring示例
  9. 宣布EAXY:使Java中的XML更容易
  10. @async方法不调用了_在Spring中使用Future对象调用Async方法调用