精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用Java8函數式編程生成字母序列

移動開發
Cabsguru 在投資前獲得了百萬美元的估值,但同一天它的創始人 Pulkit Ahuja 依舊選擇接受一份工作 offer。本文就是他這段真實的經歷,這段經歷也為想當企業家的創始人提供了一個獨特的經驗。

在 Java 8 中使用函數式編程生成字母序列是一個很大的挑戰。Lukas Eder 愉快地接受了這個挑戰,他將告訴我們如何使用 Java 8 來生成ABC的序列——當然,肯定不是一種蹩腳的方式。

我被 Stack Overflow 上網友“mip”提的一個有趣的問題給難住了。該問題是:

 
  1. 我正在尋找一種生成下列字母序列的方式: 
  2.  
  3. A, B, C, ..., Z, AA, AB, AC, ..., ZZ. 

大家應該能夠很快認出這是 Excel spreadsheet 的頭部,準確的樣子如下:

使用Java 8函數式編程生成字母序列

到現在為止,沒有一個答案是使用 Java 8 的函數式編程實現的,因此我接受此挑戰。我將使用 jOOλ,因為 Java 8 的 Stream API 提供的功能不足以完成該任務(我承認我錯了——非常感謝 Sebastian 對這個問題的有趣解答)。

首先,我們用函數的方式分解這個算法。我們所需要的組件有:

  1. 一個(可重復)的字母表。
  2. 一個上界,例如想生成多少個字母。如要求生成序列ZZ,那上界就是2。
  3. 一種將字母表中的字母與先前生成的字母聯合成一個笛卡爾積(cartesian product)的方法。

讓我們看一下代碼:

1、生成字母表

我們可以這樣寫入字母表,如:


  1. List<String> alphabet = Arrays.asList("A""B", ..., "Z"); 

但這很差勁。我們使用 jOOλ 代替:


  1. List<String> alphabet = Seq 
  2.     .rangeClosed('A''Z'
  3.     .map(Object::toString) 
  4.     .toList(); 

上面的代碼生成從字符 A 到 Z 的封閉區間(Java-8-Stream-speak 是包含上邊界的),然后將字符映射成字符串,***將其轉換為列表。

目前為止,一切都很好。現在:

2、使用上邊界:

要求的字符序列包括:


  1. A .. Z, AA, AB, .. ZZ 

但是我們應該很容易想到擴展該需求,能生成如下字符序列,或者更多:


  1. A .. Z, AA, AB, .. ZZ, AAA, AAB, .. ZZZ 

因此,我們將再次使用 rangeClosed():


  1. // 1 = A .. Z, 2 = AA .. ZZ, 3 = AAA .. ZZZ 
  2. Seq.rangeClosed(12
  3.    .flatMap(length -> ...) 
  4.    .forEach(System.out::println); 

這種方法是為范圍[1..2]中每個長度生成一個單獨的流,然后再將這些流合并到一個流中。flatMap() 的本質與命令式編程(imperative programming)中的嵌套循環類似。

3、合并字母到一個笛卡爾積中

這是最棘手的部分:我們需要合并字符及出現的次數。因此,我們將使用如下的流:


  1. Seq.rangeClosed(1, length - 1
  2.    .foldLeft(Seq.seq(alphabet), (s, i) ->  
  3.        s.crossJoin(Seq.seq(alphabet)) 
  4.         .map(t -> t.v1 + t.v2)) 
  5.     ); 

我們再次使用 rangeClosed() 來生成范圍 [1 .. length-1] 的值。foldLeft() 與 reduce() 基本一致,區別在于 foldLeft() 保證在流中的順序是從“左至右”的,不需要 fold 函數來關聯。

另一方面,這是一個共容易懂的詞匯:foldLeft() 僅代表一條循環的命令。循環的“起源”(即循環的初始化值)是一個完整的字母表(Seq.seq(alphabet))。現在,在范圍[1..length-1] 中的值生成一個笛卡爾積(crossJoin()),產生一個新的字母表,然后我們將每個合并的字母再組成一個單獨的字符串(t.v1 與 t.v2)。

這就是整個過程。

將上面的內容合并到一起

下面是一個簡單的打印 A .. Z, AA .. ZZ, AAA .. ZZZ 到控制臺的程序:


  1. import org.jooq.lambda.Seq; 
  2. public class Test { 
  3.     public static void main(String[] args) { 
  4.         int max = 3
  5.         List<String> alphabet = Seq 
  6.             .rangeClosed('A''Z'
  7.             .map(Object::toString) 
  8.             .toList(); 
  9.         Seq.rangeClosed(1, max) 
  10.            .flatMap(length -> 
  11.                Seq.rangeClosed(1, length - 1
  12.                   .foldLeft(Seq.seq(alphabet), (s, i) ->  
  13.                       s.crossJoin(Seq.seq(alphabet)) 
  14.                        .map(t -> t.v1 + t.v2))) 
  15.            .forEach(System.out::println); 
  16.     } 

聲明

對于這個問題,這確實不是***的算法。在Stack Overflow,有一個匿名用戶給出了一種***實現方法。


  1. import static java.lang.Math.*; 
  2. private static String getString(int n) { 
  3.     char[] buf = new char[(int) floor(log(25 * (n + 1)) / log(26))]; 
  4.     for (int i = buf.length - 1; i >= 0; i--) { 
  5.         n--; 
  6.         buf[i] = (char) ('A' + n % 26); 
  7.         n /= 26
  8.     } 
  9.     return new String(buf); 

不用說,這個算法比之前的函數式算法會快很多。

責任編輯:倪明 來源: ImportNew
相關推薦

2015-09-28 14:54:08

Java函數式編程

2025-06-26 08:10:00

Java8函數

2020-05-25 16:25:17

Java8Stream函數式接口

2022-09-22 08:19:26

WebFlux函數式編程

2022-12-26 07:47:37

JDK8函數式接口

2023-07-26 07:13:55

函數接口Java 8

2020-09-23 07:50:45

Java函數式編程

2020-09-22 11:00:11

Java技術開發

2020-05-29 07:20:00

Java8異步編程源碼解讀

2022-09-26 08:54:39

Spring函數式編程

2013-09-09 09:41:34

2023-05-12 07:40:01

Java8API工具

2020-10-16 10:07:03

Lambda表達式Java8

2024-02-28 08:37:28

Lambda表達式Java函數式接口

2018-11-15 10:20:59

Python函數式編程編程語言

2020-09-24 10:57:12

編程函數式前端

2025-03-11 10:00:20

Golang編程函數

2016-10-31 20:46:22

函數式編程Javascript

2011-03-08 15:47:32

函數式編程

2011-08-24 09:13:40

編程
點贊
收藏

51CTO技術棧公眾號

奇米一区二区三区| 红桃视频一区二区三区免费| 欧美大片免费播放器| 国产大片在线免费观看| 精品视频自拍| 亚洲色图欧洲色图婷婷| 国产精品久久久久久中文字| 欧美精品一区二区三区三州| 一级特黄aa大片| www.com毛片| 国产亚洲欧美日韩高清| 亚洲大尺度在线观看| 日韩人体视频| 一级日本不卡的影视| 91久久国产综合久久91精品网站| 久久久视频6r| 日韩在线影院| 国产韩日影视精品| 在线观看日韩精品| 蜜桃视频成人| 特黄视频免费看| 国产+成+人+亚洲欧洲在线| 18成人在线观看| 国产欧美久久久久久| 日本少妇xxxxx| 高清成人在线| 国产精品美女一区二区三区| 国产精品久久婷婷六月丁香| 精品一区在线观看视频| 奇米一区二区| 亚洲图片欧美一区| 成人情视频高清免费观看电影| 三级av在线免费观看| 91麻豆精品国产综合久久久 | 亚洲三级在线视频| 国产精品久久亚洲不卡| 国产亚洲成aⅴ人片在线观看| 欧美一区二区三区免费观看| 男人操女人动态图| 欧美一级二级视频| 欧美色视频日本版| 日韩欧美视频一区二区| 中国黄色一级视频| 午夜激情久久| 在线成人午夜影院| 2022中文字幕| 日漫免费在线观看网站| 久久伊人亚洲| 日韩在线免费高清视频| 日韩av影视大全| 2020国产在线| 国产日韩精品一区二区三区在线| 国产欧美日本在线| 中国女人真人一级毛片| 男女精品网站| 久久精品2019中文字幕| 日批视频免费看| 亚洲美女炮图| 中文字幕亚洲一区二区va在线| 99国产在线视频| 国产成人精品一区二三区| 8888四色奇米在线观看| 在线观看日韩| 亚洲国产精品女人久久久| 国产原创popny丨九色| 黄色小视频在线免费看| 精品国产一级| 色伊人久久综合中文字幕| 欧美床上激情在线观看| 国产清纯白嫩初高中在线观看性色| 国产日韩一级片| 99久久亚洲精品| 一本久久a久久免费精品不卡| 欧洲精品在线一区| heyzo亚洲| 高清国产福利在线观看| 狠狠一区二区三区| 亚洲免费黄色| 久久三级福利| 久久女同互慰一区二区三区| 中文字幕一区二区三区蜜月| 免费看成人午夜电影| 精品人妻伦九区久久aaa片| 永久91嫩草亚洲精品人人| 欧美富婆性猛交| 精品人妻一区二区三区日产乱码卜| 丰满少妇一区| 午夜精品久久久久久久久久久| 亚洲日本无吗高清不卡| 婷婷伊人综合中文字幕| 国产成人免费视| 成人黄色av免费在线观看| 亚洲天堂男人av| 亚洲毛片一区| 欧美黄色片免费观看| 天天综合网入口| 美美哒免费高清在线观看视频一区二区| 欧美野外猛男的大粗鳮| 一级全黄裸体免费视频| 夫妻av一区二区| 91久久偷偷做嫩草影院| 一级久久久久久久| 成a人片亚洲日本久久| 成人黄色片视频网站| 欧洲综合视频| 亚洲精品免费看| 做爰高潮hd色即是空| 伊人免费在线| 一区在线观看免费| 91丨porny丨探花| av久久网站| 亚洲国产天堂久久综合网| 日本伦理一区二区三区| 日韩一区自拍| 最近更新的2019中文字幕| 一区二区三区免费高清视频| 欧美日本一区| 欧美成人免费小视频| 久久久久在线视频| 岛国av在线一区| 久久国产精品亚洲va麻豆| 天堂网在线观看视频| 亚洲欧美日韩精品久久久久| 亚洲精品中文字幕无码蜜桃| 日韩欧美一区二区三区在线观看 | www.亚洲天堂网| 三级成人黄色影院| 精品久久国产字幕高潮| 国产人成视频在线观看| 欧美男人操女人视频| 日韩精品中文字幕在线播放| 亚洲综合网在线观看| 欧美伊人久久| 午夜精品久久久99热福利| 国产成人无码精品久在线观看 | 亚洲精品久久久蜜桃动漫| 从欧美一区二区三区| 中文字幕在线亚洲三区| 污视频免费在线观看| 亚洲成a人片在线不卡一二三区| 中文字幕第一页在线视频| 亚洲第一二区| 久久久av免费| 91av国产精品| 国产精品久久久久久久久晋中 | 伦一区二区三区中文字幕v亚洲| 欧美日韩成人一区| 老熟女高潮一区二区三区| 亚洲激情久久| 91午夜在线播放| 国产在线高潮| 欧美日韩中文字幕| 人妻丰满熟妇aⅴ无码| 亚洲精品欧洲| 鲁鲁狠狠狠7777一区二区| 黄色漫画在线免费看| 欧美色成人综合| 亚洲熟妇一区二区| 欧美日韩精品一本二本三本| caoporen国产精品| 国产精品25p| 亚洲剧情一区二区| 欧美成人777| 国产精品性做久久久久久| 国产一区二区在线视频观看| 免费亚洲视频| 欧美一级片免费在线| 秋霞网一区二区| 欧美国产综合色视频| 中文字幕精品在线播放| 成人爱爱网址| 日韩一区二区免费视频| 中文字幕日韩欧美一区二区三区| 视频一区视频二区视频| 丁香婷婷在线| 欧美日韩在线观看一区二区| 日本少妇aaa| 国产成人亚洲精品青草天美| 日韩黄色片在线| jizz一区二区三区| 日韩成人中文字幕| 日本午夜在线观看| 日韩美女福利视频| 五月婷婷六月婷婷| 国产欧美日韩精品在线| 五月天婷婷影视| 亚洲二区免费| 亚洲va欧美va国产综合久久| 青青操在线视频| 欧美在线制服丝袜| 九九热精彩视频| 欧美成人免费全部网站| 51久久夜色精品国产麻豆| 中文字幕在线免费看线人| 久久国产99| 亚洲最新免费视频| 国产成人福利av| 国产精品丝袜视频| 91禁在线看| 视频在线观看一区二区| 黄色片一区二区| 亚洲精品国产视频| 中文字幕狠狠干| 亚洲在线成人| 91成人在线视频观看| 九九久久成人| 51午夜精品视频| 91网在线看| 91精品国产综合久久福利 | 91国内精品白嫩初高生| 欧美高清视频免费观看| 黄色美女网站在线观看| 日本久久电影网| www.99热| av成人老司机| 欧美日韩二三区| 午夜精品影视国产一区在线麻豆| 成人精品一区二区三区| 久九九久频精品短视频| 欧美风情在线观看| 久草免费在线| 有码中文亚洲精品| 国产天堂第一区| 国产精品色噜噜| 少妇大叫太粗太大爽一区二区| 国产成人午夜精品5599| 伊人色在线视频| 美国三级日本三级久久99| 大肉大捧一进一出好爽动态图| 亚洲国产高清一区| 奇米777四色影视在线看| 97精品视频| 99久久99| 韩国三级成人在线| 国产精品日韩欧美| 亚洲伦理影院| 国产mv久久久| 成人性生活视频| 2019av中文字幕| 黄色片在线播放| 亚洲男人天堂古典| 欧美在线观看在线观看| 亚洲精品久久久一区二区三区 | 成人午夜短视频| 女教师高潮黄又色视频| 99精品热视频只有精品10| 免费在线看黄色片| 韩日精品视频| 青青草原亚洲| 精品国内自产拍在线观看视频 | 天天干天天插天天操| 精品成人a区在线观看| 无码人妻av一区二区三区波多野| 国产精品福利一区| 国产精品suv一区二区88| 欧美国产精品v| 欧美激情一区二区三区p站| 国产精品18久久久久久久久久久久 | 91麻豆精品国产91久久久更新时间| 亚洲视频中文字幕在线观看| 亚洲高清一区二区三区| 欧美美女性生活视频| 亚洲欧洲性图库| 欧美日韩亚洲国产另类| 国产精品色在线观看| 日本裸体美女视频| 亚洲乱码一区二区三区在线观看| 日韩中文字幕电影| 久久久久99精品一区| 国产成人精品一区二区三区在线观看 | 日韩精品123| 国产小视频国产精品| 好吊色视频一区二区| 日韩成人网免费视频| 国产区视频在线播放| 久久久999国产| 国产在线观看www| 国产精品久久久久久网站| 国产美女亚洲精品7777| 国产精品久久久久久久久久久久久| 国产在线美女| 国产精品午夜国产小视频| 欧美视频精品全部免费观看| 国精产品99永久一区一区| 菠萝蜜一区二区| 奇米精品在线| 欧美理论在线| 北条麻妃av高潮尖叫在线观看| 亚洲高清av| 亚洲精品久久久中文字幕| 日日摸夜夜添夜夜添精品视频| 国产欧美日韩网站| 喷水一区二区三区| 2018国产精品| 中文久久乱码一区二区| 日本学生初尝黑人巨免费视频| 一区二区三区在线播放| www.国产com| 91精品国产乱码| 美州a亚洲一视本频v色道| 日韩久久免费电影| 黄色在线论坛| 欧美在线播放视频| 久久综合偷偷噜噜噜色| 免费成人av网站| 国色天香一区二区| 黄大色黄女片18第一次| 99精品久久久久久| 国产又粗又猛又色| 一色桃子久久精品亚洲| www.久久久久久久| 精品久久国产老人久久综合| 91在线看片| 欧美在线一区二区三区四| 午夜av不卡| 91久久精品一区二区别| 日韩免费一区| 国产真实乱子伦| 成人精品高清在线| 唐朝av高清盛宴| 欧美老年两性高潮| 国产综合在线观看| 91av在线免费观看视频| 91免费精品国偷自产在线在线| 国产精品传媒毛片三区| 91av精品| 精品国产鲁一鲁一区二区三区| 国产日韩欧美麻豆| aaaaaa毛片| 精品在线欧美视频| 国产精品yjizz视频网| 国产精品 日韩| 欧美日韩一卡| 黄页网站在线看| 自拍偷拍欧美激情| 国产又黄又爽视频| 精品少妇一区二区| 182tv在线播放| 91久久精品美女| 国产精品7m凸凹视频分类| 中文字幕在线观看第三页| 国产一区二区中文字幕| 少妇一级淫片免费放播放| 久久久电影一区二区三区| 西西44rtwww国产精品| 亚洲国产精品久久久| av免费在线一区二区三区| 国产91在线视频| 精品国产一区二区三区小蝌蚪| 国产视频在线视频| 中文字幕免费观看一区| www.亚洲激情| 中文字幕亚洲国产| av蜜臀在线| 国语精品免费视频| 久久影院一区| 波多野结衣国产精品| 日韩美女啊v在线免费观看| 99久久久久久久| 欧美激情久久久| 久久中文资源| 国产成人综合一区| 国产精品水嫩水嫩| 99在线精品视频免费观看20| 日韩精品中文字幕在线| 综合在线影院| 亚洲一区3d动漫同人无遮挡| 黄色小说综合网站| 欧美特级黄色录像| 欧美无砖砖区免费| 午夜视频在线播放| 欧美精品在线极品| 久久国产精品色av免费看| 无码精品国产一区二区三区免费| 欧美国产综合一区二区| 国产成年妇视频| 69精品小视频| 99久久久久| 亚洲天堂av网站| 欧美性受极品xxxx喷水| 在线网址91| 蜜桃传媒视频第一区入口在线看| 日本女人一区二区三区| 一区二区在线观看免费视频| 日韩av在线网站| 日韩欧国产精品一区综合无码| 日本一区二区久久精品| 国内不卡的二区三区中文字幕| 国产黄色片视频| 自拍偷拍亚洲一区| 国产精品白丝av嫩草影院| 国产精品视频黄色| 亚洲午夜羞羞片| 成年人在线观看网站| 国产精品精品视频| 一区二区蜜桃| 变态另类ts人妖一区二区| 精品久久久久久久人人人人传媒 | 成人国产精品一区二区| 国产精品久久久免费|