Java8でよく使われる組み込み関数のまとめ(コード例)
この記事では、Java 8 でよく使われる組み込み関数の概要 (コード例) を紹介します。一定の参考価値があります。必要な友人は参照してください。お役に立てば幸いです。
#一般的に使用される関数インターフェイスは、後で簡単に参照できるように記録されています
パラメータ | # # 戻り値の型#Description | ||
---|---|---|---|
boolean | 特定の値を入力し、特定の値を決定するために使用されるブール値を出力します | Consumer |
|
void | 特定の値を入力しても出力はありません。特定の値を消費するために使用されます | 関数 | T |
特定の種類の値を入力し、型変換などに使用される別の A 型値を出力します。 | サプライヤー | None | |
No入力、出力、特定の値の生成に使用される特定の値 | UnaryOperator | T | |
Input特定の型の値を取得し、同じ Type 値を出力します。これは、値に対する四則演算の実行など、値の同じ型の変換に使用されます。 | BinaryOperator | (T,T) | |
特定の型の 2 つの値を入力し、同じ型の値を出力します。2 つの値を結合する場合などに使用されます。 | Predicates |
Function<String, Integer> toInteger = Integer::valueOf; Function<String, String> backToString = toInteger.andThen(String::valueOf); backToString.apply("123"); // "123"
Supplier<Person> personSupplier = Person::new; personSupplier.get(); // new Person
Consumer<Person> greeter = (p) -> System.out.println("Hello, " + p.firstName); greeter.accept(new Person("Luke", "Skywalker"));
Comparator<Person> comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); Person p1 = new Person("John", "Doe"); Person p2 = new Person("Alice", "Wonderland"); comparator.compare(p1, p2); // > 0 comparator.reversed().compare(p1, p2); // < 0
既存のデータ構造を Stream に変換します
Stream<Integer> s = Stream.of(1, 2, 3, 4, 5);
Stream<Integer> s = Arrays.stream(arr);
Stream<Integer> s = aList.stream();
ログイン後にコピー
Through Stream 。 generate() メソッド: -
// 这种方法通常表示无限序列
Stream<T> s = Stream.generate(SuppLier<T> s);
// 创建全体自然数的Stream
class NatualSupplier implements Supplier<BigInteger> {
BigInteger next = BigInteger.ZERO;
@Override
public BigInteger get() {
next = next.add(BigInteger.ONE);
return next;
}
}
ログイン後にコピー
他のメソッドを介して返す-
Stream<String> lines = Files.lines(Path.get(filename))
...
ログイン後にコピー
map メソッド
- 操作オペレーションを各要素のストリームにマップするこれにより、あるストリームから別のストリームへの変換が完了します。
map メソッドによって受け入れられるオブジェクトは Function インターフェイスであり、これは関数インターフェイスです。
<R> Stream<R> map(Function<? super T, ? extends R> mapper);
@FunctionalInterface
public interface Function<T, R> {
// 将T转换为R
R apply(T t);
}
ログイン後にコピー
Usage:
// 获取Stream里每个数的平方的集合
Stream<Integer> ns = Stream.of(1, 2, 3, 4, 5);
ns.map(n -> n * n).forEach(System.out::println);
ログイン後にコピー
Stream<Integer> s = Stream.of(1, 2, 3, 4, 5); Stream<Integer> s = Arrays.stream(arr); Stream<Integer> s = aList.stream();
// 这种方法通常表示无限序列 Stream<T> s = Stream.generate(SuppLier<T> s); // 创建全体自然数的Stream class NatualSupplier implements Supplier<BigInteger> { BigInteger next = BigInteger.ZERO; @Override public BigInteger get() { next = next.add(BigInteger.ONE); return next; } }
Stream<String> lines = Files.lines(Path.get(filename)) ...
<R> Stream<R> map(Function<? super T, ? extends R> mapper); @FunctionalInterface public interface Function<T, R> { // 将T转换为R R apply(T t); }
// 获取Stream里每个数的平方的集合 Stream<Integer> ns = Stream.of(1, 2, 3, 4, 5); ns.map(n -> n * n).forEach(System.out::println);
flatMap
Stream<List<Integer>> inputStream = Stream.of(Arrays.asList(1), Arrays.asList(2, 3), Arrays.asList(4, 5, 6));
List<Integer> integerList = inputStream.flatMap((childList) -> childList.stream()).collect(Collectors.toList());
//将一个“二维数组”flat为“一维数组”
integerList.forEach(System.out::println);
ログイン後にコピー
filter メソッドfilter メソッドは、ストリーム内の要素をフィルタリングし、修飾された要素を含む新しいストリームを生成するために使用されます。 Stream<List<Integer>> inputStream = Stream.of(Arrays.asList(1), Arrays.asList(2, 3), Arrays.asList(4, 5, 6)); List<Integer> integerList = inputStream.flatMap((childList) -> childList.stream()).collect(Collectors.toList()); //将一个“二维数组”flat为“一维数组” integerList.forEach(System.out::println);
フィルター メソッドによって受け入れられるパラメーターは、Predicate インターフェイス オブジェクトです。このインターフェイスは関数インターフェイスです:
Stream<T> filter(Predicate<? super T>) predicate; @FunctionInterface public interface Predicate<T> { // 判断元素是否符合条件 boolean test(T t); }
Use
// 获取当前Stream所有偶数的序列 Stream<Integer> ns = Stream.of(1, 2, 3, 4, 5); ns.filter(n -> n % 2 == 0).forEach(System.out::println);
limit および Skip
Stream<User> stream = users.stream(); Optional<String> userID = stream.filter(User::isVip).sorted((t1, t2) -> t2.getBalance() - t1.getBalance()).limit(3).map(User::getUserID).findFirst(); userID.ifPresent(uid -> System.out.println("Exists"));
reduce メソッドで受け入れられるメソッドは、BinaryOperator インターフェイス オブジェクトです。
Optional<T> reduce(BinaryOperator<T> accumulator); @FuncationalInterface public interface BinaryOperator<T> extends BiFunction<T, T, T> { // Bi操作,两个输入,一个输出 T apply(T t, T u); }
使用:
// 求当前Stream累乘的结果 Stream<Integer> ns = Stream.of(1, 2, 3, 4, 5); int r = ns.reduce( (x, y) -> x * y ).get(); System.out.println(r);
以上がJava8でよく使われる組み込み関数のまとめ(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Spring Bootは、Java開発に革命をもたらす堅牢でスケーラブルな、生産対応のJavaアプリケーションの作成を簡素化します。 スプリングエコシステムに固有の「構成に関する慣習」アプローチは、手動のセットアップを最小化します。
