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

資訊專欄INFORMATION COLUMN

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

Ajian / 1526人閱讀

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

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

你想把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實現如下:

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;
  }
}

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

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

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

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/64238.html

相關文章

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

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

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

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

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

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

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

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

    mayaohua 評論0 收藏0

發表評論

0條評論

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