目次
1. リストをすばやく作成します
(1)、リストを新規作成し、
を 1 つずつ追加します (2)、ストリーム フロー: 動的リストを作成し、要素
を追加できます(3)、固定長のリストを作成する場合、Arrays.asList(…args) を使用してリストを直接返すことができます
2. オブジェクトの特定の列を取得します :
(1)、トラバース
(2)、ストリーム フロー: map
3。判定条件に基づいて対象オブジェクトを抽出します。
(1) をフィルタリングして、トラバースして追加します。 if
(2)、ストリーム ストリーム: filter
4、グループ
(1)、トラバーサル プラスif
(2)、ストリーム フロー: groupingBy
5、summation
(1)、int、double、long:
6. マップとリストの変換
(1)、リストからマップへ:
(2)、リストへのマップ:
7. 判定を行う
(1), anyMatch():
(2), allMatch():
(3), noneMatch():
(4)、目標合計を取得します:
ホームページ Java &#&チュートリアル Java8 Streamの一般的なメソッドは何ですか?

Java8 Streamの一般的なメソッドは何ですか?

May 05, 2023 pm 05:01 PM
java stream

1. リストをすばやく作成します

たとえば、エンティティ クラス User があり、User には属性 Name

public class User {
	public User(String name, String age, int height) {
		this.name = name;
		this.age = age;
		this.height = height;
	}
	private String name;
	private String age;
	private int height;
	// setter、getter方法我就不写了
}

// 创建三个user
User user1 = new User("111", "18", 180);
User user2 = new User("222", "18", 175);
User user3 = new User("333", "19", 170);
ログイン後にコピー
があります

次に、3 人のユーザーを作成して、それらをリスト:

(1)、リストを新規作成し、

List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userList.add(user3);
ログイン後にコピー

を 1 つずつ追加します (2)、ストリーム フロー: 動的リストを作成し、要素

// stream流,创建的是动态数组,可以添加元素
List<User> userList = Stream.of(user1, user2, user3).collect(Collectors.toList());
ログイン後にコピー

を追加できます(3)、固定長のリストを作成する場合、Arrays.asList(…args) を使用してリストを直接返すことができます

本質は、配列をリストに変換することです。配列は固定されているため、このリストに要素を追加できません。

add メソッドを呼び出して新しい要素を追加すると、例外が報告されます: java.lang.UnsupportedOperationException

When要素は修正されているため、これを使用できます;

// 本质是将一个数组转成list,数组的大小是固定的,所以此list不能添加元素
// 如果调用add方法增加新的元素,会报异常:java.lang.UnsupportedOperationException
List<String> s = Arrays.asList("1","2","3")
ログイン後にコピー

2. オブジェクトの特定の列を取得します :

上記の userList を例として、すべてのユーザーの name 属性を取り出しますリストを作成して新しいリストに追加します:

(1)、トラバース

// 遍历
List<String> userNameList = new ArrayList<>();
for (User user : userList) {
    userNameList.add(user.getName());
}
ログイン後にコピー

(2)、ストリーム フロー: map

// Stream流
List<String> userNameList = userList.stream().map(User::getName).collect(Collectors.toList());
ログイン後にコピー

3。判定条件に基づいて対象オブジェクトを抽出します。

また、上記の userList を取り上げます。たとえば、userList 内の名前が空ではない user

(1) をフィルタリングして、トラバースして追加します。 if

List<User> newUserList = new ArrayList<>();
// if判断
for (User user : userList) {
    if(user.getName() != null) {
        newUserList.add(user); 
    }
}
ログイン後にコピー

(2)、ストリーム ストリーム: filter

// 获取userName不为空的user的List
List<User> userList = userList.stream().filter(user-> user.getName() != null).collect(Collectors.toList());
ログイン後にコピー

4、グループ

年齢に応じたユーザー グループ化:

(1)、トラバーサル プラスif

Map<String, List<User>> map = new HashMap<>();
// if判断
for (User user : userList) {
    if (map.get(user.getAge()) == null) {
        map.put(user.getAge(), new ArrayList());
    }
    map.get(user.getAge()).add(user);
}
ログイン後にコピー

(2)、ストリーム フロー: groupingBy

Map<String, List<User>> map =userList.stream().collect( Collectors.groupingBy(User::getAge, Collectors.toList()));
ログイン後にコピー

5、summation

(1)、int、double、long:

普通合計のトラバーサル方法は上記と同様なので、例は示しません;

// int、double、long:
double max = userList.stream().mapToDouble(User::getHeight).sum();
ログイン後にコピー

6. マップとリストの変換

(1)、リストからマップへ:

a、トラバーサル:

    Map<String, User> userMap = new Map<>();
    for (User user : userList) {
        userMap.put(user.getName(), user);
    }
ログイン後にコピー

b、ストリーム:

コレクターの toMap メソッドを使用してリストを変換すると、通常、質問ごとに 2 つの問題が発生します。

(1) マップの変換、キーの重複問題;

コード内で (key1, key2)->key2 式を使用すると、この種の問題を解決できます。重複するキーがある場合は、 key2 以前の key1 を上書きするには、(key1, key2)->key1 として定義し、key1 を保持し、独自のビジネス シナリオに応じて調整することもできます。

(2) Null ポインター例外。つまり、マップに変換された値が null です。これはフィルターでフィルタリングできます;

    Map<String, User> userMap= userList.stream().collect(Collectors.toMap(User::getName, Function.identity(),(key1, key2)->key2));
ログイン後にコピー

(2)、リストへのマップ:

a、トラバーサル:

    List<User> userList = new List<>();
    for (String userName : userMap.keySet()) {
        userList.add(userMap.get(userName));
    }
ログイン後にコピー

b、ストリーム:

   List<User> userList = userMap.entrySet().stream().map(e ->e.getValue()).collect(Collectors.toList());
ログイン後にコピー

7. 判定を行う

(1), anyMatch():

判定条件に成功した要素があればtrueを返します。

例: userlList上記では、高さ > 175 があるかどうかを判断する:

    userList.stream().anyMatch(user -> user.getHeight() > 175);
ログイン後にコピー

(2), allMatch():

allMatch: 条件内の要素の判定、それらはすべて、return true;

たとえば、上記の userlList で、すべての高さが 175 より大きいかどうかを判断したい:

    userList.stream().allMatch(user -> user.getHeight() > 175);
ログイン後にコピー

(3), noneMatch():

allMatch に反して、条件内のすべての要素が判定されます。なし、true を返します

    userList.stream().noneMatch(user -> user.getHeight() > 175);
ログイン後にコピー

(4)、目標合計を取得します:

    userList.stream().filter(user -> user.getHeight() > 175).count();
ログイン後にコピー

すべての出力結果:

システム.out.println(userList.stream().anyMatch(user -> user.getHeight() > 175));
System.out.println(userList.stream().allMatch(user -> user .getHeight() > 175 ));
System.out.println(userList.stream().noneMatch(user -> user.getHeight() > 175));
System.out.println (userList.stream().filter(user -> user.getHeight() > 175).count());

Java8 Streamの一般的なメソッドは何ですか?

以上がJava8 Streamの一般的なメソッドは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Javaの平方根 Javaの平方根 Aug 30, 2024 pm 04:26 PM

Java の平方根のガイド。ここでは、Java で平方根がどのように機能するかを、例とそのコード実装をそれぞれ示して説明します。

Javaの完全数 Javaの完全数 Aug 30, 2024 pm 04:28 PM

Java における完全数のガイド。ここでは、定義、Java で完全数を確認する方法、コード実装の例について説明します。

Java の乱数ジェネレーター Java の乱数ジェネレーター Aug 30, 2024 pm 04:27 PM

Java の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

ジャワのウェカ ジャワのウェカ Aug 30, 2024 pm 04:28 PM

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

Javaのアームストロング数 Javaのアームストロング数 Aug 30, 2024 pm 04:26 PM

Java のアームストロング番号に関するガイド。ここでは、Java でのアームストロング数の概要とコードの一部について説明します。

Javaのスミス番号 Javaのスミス番号 Aug 30, 2024 pm 04:28 PM

Java のスミス番号のガイド。ここでは定義、Java でスミス番号を確認する方法について説明します。コード実装の例。

Java Springのインタビューの質問 Java Springのインタビューの質問 Aug 30, 2024 pm 04:29 PM

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

Java 8 Stream Foreachから休憩または戻ってきますか? Java 8 Stream Foreachから休憩または戻ってきますか? Feb 07, 2025 pm 12:09 PM

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

See all articles