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.pswp.cn/news/372322.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372322.shtml
英文地址,請注明出處:http://en.pswp.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[工作地_市][…