国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用Lambda武裝你的Java: 集合轉(zhuǎn)換

Ajian / 1521人閱讀

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

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

你想把Collection轉(zhuǎn)換成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,我們簡單的集合操作不需要這么高級的能力。

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

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/64238.html

相關(guān)文章

  • Lambda武裝你的Java: 靈活的事務(wù)

    摘要:假如你寫了類似這樣的和偽代碼問題來了,和分別用了兩個分開的事務(wù),如果你用了或,并且是的,這就沒法運行。你需要讓兩次調(diào)用運行在同一個事務(wù)里。 當你采用Spring之類的框架,用了聲明式事務(wù),難道每一段需要事務(wù)的代碼都必須寫成一個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 表達式可以讓我們的程序設(shè)計更加簡潔。最近新的項目摒棄了 6th 版本,全面基于 8th 進行開發(fā),本文將探討...

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

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

    mayaohua 評論0 收藏0

發(fā)表評論

0條評論

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