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

有时,当我对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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql锁表问题的解决方法_MYSQL锁表问题的解决方法

本文实例讲述了MYSQL锁表问题的解决方法。分享给大家供大家参考,具体如下:很多时候!一不小心就锁表!这里讲解决锁表终极方法!案例一mysql>show processlist;参看sql语句一般少的话mysql>kill thread_id;就可以解…

linux——(1)初识linux

linux有窗口管理员环境和纯文本界面环境,同时linux默认提供6个Terminal来让用户登录。crtlaltF1-6可自由切换。其中如果窗口管理员环境处于运行状态,那么可以按crtlaltF7直接切过去。 常用命令: cd [dir] #进入dir目录下 ls #列出当前目录下的…

4.26学习成果

哇,今天终于开始接触Web了,感觉有点小兴奋,这几天看来那个视频感觉挺有趣的,挺奇妙的。看到人家敲代码,感觉好厉害。但是感觉不懂,所以,要努力学习了。 今天的学习成果: 网页由什么组…

将Glassfish 3连接到外部ActiveMQ 5代理

介绍 在ONVZ,我们将Glassfish 3用作开发和生产应用服务器,我们对其性能和稳定性以及周围的广大社区感到非常满意。 我很少遇到在stackoverflow或java.net上没有匹配解决方案的问题。 作为我们开源策略的一部分,我们还运行了一个定制的ActiveM…

esp8266 lcd 天气_ESP8266 显示实时天气信息

代码文件getdata.h#include #include #include #include #include #include #include #define DEBUG 1#define MAX_CONTENT_SIZE 2000const char* ssid "weather";const char* password "mymymymy";WiFiClient client;HTTPClient http;char response[MAX…

【VS开发】visual studio 2015的NuGet Manager解决方案管理功能

NuGet的官方说明是:NuGet是一款Visual Studio的扩展,它可以简单的安装、升级开源库和工具。 官网地址:http://www.nuget.org/ 官网最醒目的位置就是下载链接,安装完成后我们来快速体验一把。 手上有个小项目需要使用到json格式&am…

五. 面向对象高级特性4. 接口的概念和使用

在抽象类中,可以包含一个或多个抽象方法;但在接口(interface)中,所有的方法必须都是抽象的,不能有方法体,它比抽象类更加“抽象”。接口使用 interface 关键字来声明,可以看做是一种特殊的抽象类&#xff0…

智能配料

我们都有多少次听说“分批处理”会增加延迟? 作为对低延迟系统充满热情的人,这让我感到惊讶。 以我的经验,正确完成批处理不仅可以提高吞吐量,还可以减少平均延迟并保持一致。 那么,批处理如何神奇地减少延迟呢&#x…

mysql从myisam_将MySQL从MyISAM转换成InnoDB错误和解决办法

原来自己用的是为了装的, 所以在设置database usage(如下图1)的时候按照discuz官方的建议,选的都是Non-Transactional Database Only(只支持MyISAM数据引擎的非事务数据库),用MyISAM数据库,还没涉及到需要InnoDB,因此打…

相似性度量中用到的一些距离函数

本文目录 1. 欧氏距离 2. 曼哈顿距离 3. 切比雪夫距离 4. 闵可夫斯基距离 5. 标准化欧氏距离 6. 马氏距离 7. 汉明距离 8. 杰卡德距离 & 杰卡德相似系数 9. 相关系数 & 相关距离 10. 信息熵 1. 欧氏距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法&a…

Spring 3.1配置文件和Tomcat配置

Spring 3.1引入了非常有用的功能,称为配置文件 。 因此,它易于构建,可以在所有环境(开发,测试,生产等)中部署的软件包。 通过定义系统属性spring.profiles.active, Spring允许我们使…

计算1~n之间所有奇数之和_所有奇数长度子数组的和

所有奇数长度子数组的和题目:给你一个正整数数组 arr ,请你计算所有可能的奇数长度子数组的和。子数组 定义为原数组中的一个连续子序列。请你返回 arr 中 所有奇数长度子数组的和 。示例 1:输入:arr [1,4,2,5,3]输出&#xff1a…

MYSQL AND OR的联用

MYSQL AND OR的联用 MYSQL中”AND”和”OR”都是条件控制符。”AND”是求交集,而”OR”则是求并集,非常多情况下,须要联用它们两个。下面是两张表,我仅仅列出实用的字段。 Table:student_score 学生成绩 sid(学生ID) cid(课程ID) score(分数)…

九度oj 题目1456:胜利大逃亡

题目描述:Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知道魔王将在T分钟后回到城堡,I…

JMX:一些入门说明

JMX(Java管理扩展)是一种J2SE技术,可以管理和监视Java应用程序。 基本思想是实现一组管理对象,并将实现注册到平台服务器,在平台服务器上,可以使用一组连接器或适配器从本地或远程调用这些实现到JVM。 一个…

解释java程序中的异常机制_Java编程中的异常机制

本文旨在以初学者的角度来学习Java异常的知识,尽量简单,一些细枝末节的知识不会讲述,但不影响对知识的掌握。(比如try-catch可以嵌套,不太会这么用)1.什么是异常我们先举个例子int x 10/0;在IDE里输入这样…

keras做多层神经网络

一、 背景与目的 背景:配置好了theano,弄了gpu, 要学dnn方法。 目的:本篇学习keras基本用法, 学习怎么用keras写mlp,学keras搞文本的基本要点。 二、 准备 工具包: theano、numpy、keras等工具包…

配置环境变量

由于写了一个关于生成签名需要配置环境变量,所以在这里顺便把配置环境变量的步骤说一下 1.右键点击计算机,然后点击高级系统设置 2.点击环境变量,下方出现的即为系统变量,双击path就能直接修改, 转载于:https://www.cn…

使用JavaFX AnimationTimer

回想一下,给AnimationTimer起个名字可能不是一个好主意,因为它不仅可以用于动画,还可以用于测量:fps速率,碰撞检测,模拟步骤,游戏主循环等实际上,大部分时间我都看到了AnimationTime…

python列表姓氏_python数据分析实例(六) 中国姓氏数据

bokeh联动柱状图,Excel空间柱状图、空间热力图,Echarts空间柱状图,常用函数:df[工作地_省] df[工作地].str.split(省).str[0]df[工作地_市] df[工作地_市] df[工作地].str.split(省).str[1].str.split(市).str[0]df[工作地_市][…