成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用Lambda武裝你的Java: 集合轉換

Ajian / 1547人閱讀

摘要:網(wǎng)上介紹和集合新特性的代碼太千篇一律了,我來提供些不一樣的?;蛘邔崿F(xiàn)如下它的實現(xiàn)沒有使用,因為是一種強大到能延遲處理和并行處理的,我們簡單的集合操作不需要這么高級的能力。目前只寫了三個方法,如果有需求,還可以擴充更多的方法。

網(wǎng)上介紹Java 8 lambda和集合新特性的代碼太千篇一律了,我來提供些不一樣的。雖然很簡單,但也是工業(yè)級代碼,不是網(wǎng)上抄來抄去的教學代碼。權當給大家提供一個思路。

你想把Collection轉換成Collection,或者復制、合并、排序,你可以用Java 8的stream API,但我覺得書寫起來太繁(每次都要import Collectors, 再寫上Collectors.toXXX),你可以用以下這個工具類來做。

Collection elements1 = ..., elements2 = ...;

Collection rs = Colls.map(elements, t->new R(t));
// 或者 Colls.map(elements, R::new);

Collection allElements = Colls.copy(elements1, elements2);
Collection sortedElements = Colls.copySort(comparator, elements1, elements2);

Colls實現(xiàn)如下:

import java.util.*;
import java.util.function.Function;

public abstract class Colls {
  public static  List map(Collection coll, Function transformer) {
    List result = new ArrayList<>(coll.size());
    for (T t : coll) {
      result.add(transformer.apply(t));
    }
    return result;
  }

  @SafeVarargs
  public static  List copy(Collection... colls) {
    List list = new ArrayList<>();
    for (Collection coll : colls) {
      list.addAll(coll);
    }
    return list;
  }

  @SafeVarargs
  public static  List copySort(Comparator comparator, Collection... colls) {
    List list = copy(colls);
    Collections.sort(list, comparator);
    return list;
  }
}

它的實現(xiàn)沒有使用stream API,因為stream是一種強大到能延遲處理和并行處理的API,我們簡單的集合操作不需要這么高級的能力。

目前只寫了三個方法,如果有需求,還可以擴充更多的方法。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/64238.html

相關文章

  • Lambda武裝你的Java: 靈活的事務

    摘要:假如你寫了類似這樣的和偽代碼問題來了,和分別用了兩個分開的事務,如果你用了或,并且是的,這就沒法運行。你需要讓兩次調(diào)用運行在同一個事務里。 當你采用Spring之類的框架,用了聲明式事務,難道每一段需要事務的代碼都必須寫成一個bean method,再標上@Transactional? 未免太麻煩了,不信你瞧。假如你寫了類似這樣的Controller和Service (偽代碼): ...

    The question 評論0 收藏0
  • Java8流特性和Lambda表達式

    摘要:表達式體現(xiàn)了函數(shù)式編程的思想,即一個函數(shù)亦可以作為另一個函數(shù)參數(shù)和返回值,使用了函數(shù)作參數(shù)返回值的函數(shù)被稱為高階函數(shù)。對流對象進行及早求值,返回值不在是一個對象。 Java8主要的改變是為集合框架增加了流的概念,提高了集合的抽象層次。相比于舊有框架直接操作數(shù)據(jù)的內(nèi)部處理方式,流+高階函數(shù)的外部處理方式對數(shù)據(jù)封裝更好。同時流的概念使得對并發(fā)編程支持更強。 在語法上Java8提供了Lamb...

    gaara 評論0 收藏0
  • Java 8th 函數(shù)式編程:lambda 表達式

    摘要:自定義函數(shù)式接口我們在前面例子中實現(xiàn)的蘋果篩選接口就是一個函數(shù)式接口定義如下,正因為如此我們可以將篩選邏輯參數(shù)化,并應用表達式僅包含一個抽象方法,依照定義可以將其視為一個函數(shù)式接口。 Lambda 表達式是 java 8th 給我們帶來的幾個重量級新特性之一,借用 lambda 表達式可以讓我們的程序設計更加簡潔。最近新的項目摒棄了 6th 版本,全面基于 8th 進行開發(fā),本文將探討...

    luffyZh 評論0 收藏0
  • Java8新特性總覽

    摘要:新特性總覽標簽本文主要介紹的新特性,包括表達式方法引用流默認方法組合式異步編程新的時間,等等各個方面。還有對應的和類型的函數(shù)連接字符串廣義的歸約匯總起始值,映射方法,二元結合二元結合。使用并行流時要注意避免共享可變狀態(tài)。 Java8新特性總覽 標簽: java [TOC] 本文主要介紹 Java 8 的新特性,包括 Lambda 表達式、方法引用、流(Stream API)、默認方...

    mayaohua 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<