新聞中心
本文列舉了十個(gè)使用一行代碼即可獨(dú)立完成(不依賴其他代碼)的業(yè)務(wù)邏輯,主要依賴的是Java8中的Lambda和Stream等新特性以及try-with-resources、JAXB等。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、寧波網(wǎng)站維護(hù)、網(wǎng)站推廣。
1、對(duì)列表/數(shù)組中的每個(gè)元素都乘以2
- // Range是半開(kāi)區(qū)間
- int[] ia = range(1, 10).map(i -> i * 2).toArray();
- List
result = range(1, 10).map(i -> i * 2).boxed().collect(toList());
2、計(jì)算集合/數(shù)組中的數(shù)字之和
- range(1, 1000).sum();
- range(1, 1000).reduce(0, Integer::sum);
- Stream.iterate(0, i -> i + 1).limit(1000).reduce(0, Integer::sum);
- IntStream.iterate(0, i -> i + 1).limit(1000).reduce(0, Integer::sum);
3、驗(yàn)證字符串是否包含集合中的某一字符串
- final List
keywords = Arrays.asList("brown", "fox", "dog", "pangram"); - final String tweet = "The quick brown fox jumps over a lazy dog. #pangram http://www.rinkworks.com/words/pangrams.shtml";
- keywords.stream().anyMatch(tweet::contains);
- keywords.stream().reduce(false, (b, keyword) -> b || tweet.contains(keyword), (l, r) -> l || r);
4、讀取文件內(nèi)容
- 原作者認(rèn)為try with resources也是一種單行代碼編程。
- try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
- String fileText = reader.lines().reduce("", String::concat);
- }
- try (BufferedReader reader = new BufferedReader(new FileReader("data.txt"))) {
- List
fileLines = reader.lines().collect(toCollection(LinkedList ::new)); - }
- try (Stream
lines = Files.lines(new File("data.txt").toPath(), Charset.defaultCharset())) { - List
fileLines = lines.collect(toCollection(LinkedList ::new)); - }
5、輸出歌曲《Happy Birthday to You!》 – 根據(jù)集合中不同的元素輸出不同的字符串
- range(1, 5).boxed().map(i -> { out.print("Happy Birthday "); if (i == 3) return "dear NAME"; else return "to You"; }).forEach(out::println);
6、過(guò)濾并分組集合中的數(shù)字
- Map> result = Stream.of(49, 58, 76, 82, 88, 90).collect(groupingBy(forPredicate(i -> i > 60, "passed", "failed")));
7、獲取并解析xml協(xié)議的Web Service
- FeedType feed = JAXB.unmarshal(new URL("http://search.twitter.com/search.atom?&q=java8"), FeedType.class);
- JAXB.marshal(feed, System.out);
8、獲得集合中最小/***的數(shù)字
- int min = Stream.of(14, 35, -7, 46, 98).reduce(Integer::min).get();
- min = Stream.of(14, 35, -7, 46, 98).min(Integer::compare).get();
- min = Stream.of(14, 35, -7, 46, 98).mapToInt(Integer::new).min();
- int max = Stream.of(14, 35, -7, 46, 98).reduce(Integer::max).get();
- max = Stream.of(14, 35, -7, 46, 98).max(Integer::compare).get();
- max = Stream.of(14, 35, -7, 46, 98).mapToInt(Integer::new).max();
9、并行處理
- long result = dataList.parallelStream().mapToInt(line -> processItem(line)).sum();
10、集合上的各種查詢(LINQ in Java)
- List
albums = Arrays.asList(unapologetic, tailgates, red); - //篩選出至少有一個(gè)track評(píng)級(jí)4分以上的專輯,并按照名稱排序后打印出來(lái)。
- albums.stream()
- .filter(a -> a.tracks.stream().anyMatch(t -> (t.rating >= 4)))
- .sorted(comparing(album -> album.name))
- .forEach(album -> System.out.println(album.name));
- //合并所有專輯的track
- List
- .flatMap(album -> album.tracks.stream())
- .collect(toList());
- //根據(jù)track的評(píng)分對(duì)所有track分組
- Map
> tracksByRating = allTracks.stream() - .collect(groupingBy(Track::getRating));
分享文章:Java中的十個(gè)”單行代碼編程”(OneLiner)
標(biāo)題來(lái)源:http://fisionsoft.com.cn/article/djepiog.html


咨詢
建站咨詢
