Java8 StreamAPIでmap()メソッドを使用する方法
はじめに
日々の開発作業では、オブジェクトのコレクションからオブジェクト内の属性のコレクションを取得するなど、リスト内のデータを処理する問題に遭遇することがよくあります。以前は、各要素を走査し、それを取り出して別のコレクションに入れると考えていましたが、これはさらに面倒でしたが、Java 8 以降では、コレクションに対して Stream 操作を実行できるため、上記の処理がより簡潔になります。
概要
Stream ストリーミング処理には、map() メソッドがあります。まずはその定義を見てみましょう。このメソッドは java.util.stream.Stream クラスにあります。
map() メソッドが関数インターフェイス パラメーターを受け取ることがわかります。入力パラメーターには T があり、ストリームを返します。このストリームは R ジェネリックです。主に次の点に注意してください:
入力パラメータはストリーム内の要素です;
出力パラメータはストリームです。ストリームが New 要素で、
# を図で表すと、元のストリームには 4 つの循環パターンがあり、map() 関数を呼び出すと、4 と 5- になります。ここで、円形パターンと五芒星パターンは、元のストリームに要素がいくつあるか、map() メソッドを呼び出した後にまだ要素がどれだけあるかという 1 対 1 の対応関係を持ちます。 、変わるのはストリーム内の要素タイプだけです。
例
最初にエンティティ クラス Student.java
@Data public class Student implements Serializable { /** * 姓名 */ private String name; /** * 班级 */ private String schoolClass; /** *语文成绩 */ private Integer chineseScore; /** * 数学成绩 */ private Integer mathScore; }
を作成し、次にデータを初期化するクラスを作成します。
public class DataFactory { public static List<Student> initData(){ List<Student> list= new ArrayList<>(); Student s1=new Student(); s1.setName("汤霖"); s1.setSchoolClass("小一班"); s1.setChineseScore(87); s1.setMathScore(95); list.add(s1); Student s2=new Student(); s2.setName("李牧唐"); s2.setSchoolClass("小二班"); s2.setChineseScore(98); s2.setMathScore(97); list.add(s2); Student s3=new Student(); s3.setName("顾北辰"); s3.setSchoolClass("二年级"); s3.setChineseScore(89); s3.setMathScore(94); list.add(s3); Student s4=new Student(); s4.setName("言言"); s4.setSchoolClass("小二班"); s4.setChineseScore(100); s4.setMathScore(90); list.add(s4); Student s5=new Student(); s5.setName("大运"); s5.setSchoolClass("小三班"); s5.setChineseScore(96); s5.setMathScore(100); list.add(s5); return list; } }
すべての学生の名前を検索します
public static void main(String[] args) { DataFactory.initData().stream() .map(student -> student.getName()) .forEach(System.out::println); }
学生の名前をリストに入れます
public static void main(String[] args) { //将所有的学生姓名放到list中 List<String> studentNames = DataFactory.initData().stream() .map(student -> student.getName()) .collect(Collectors.toList()); for (String studentName : studentNames) { System.out.println(studentName); } }
//将学生姓名放到Set中,可以实现去重功能 Set<String> studentNames = DataFactory.initData().stream() .map(student -> student.getName()) .collect(Collectors.toSet());
「Tang Lin」という名前の学生の中国語スコアを 90 に設定します
次に、Tang Lin という名前の学生の中国語スコアを 90 に設定する必要があります90、map() 関数の使い方を見てみましょう。
public static void main(String[] args) { List<Student> students = DataFactory.initData(); List<Student> studentNames = students.stream().map(student -> { if ("汤霖".equals(student.getName())) { student.setChineseScore(90); } return student; }).collect(Collectors.toList()); for (Student studentName : studentNames) { System.out.println(studentName); } //打印老的list System.out.println("-----改之前的数据-----"); for (Student studentName : students) { System.out.println(studentName); } }
##上記の結果から、Tang Lin の中国語スコアが実際に
に変更されたことがわかります。これは正しいです。元のデータを見ると、90
にも変更されています。前述したように、map() メソッドは新しいストリームを生成し、次の行があるため、元のストリーム内のデータも変更されています。参照型のデータは要素内の要素に基づいて変更され、その結果、元のストリームのデータも変更されます。
以上がJava8 StreamAPIでmap()メソッドを使用する方法の詳細内容です。詳細については、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 の乱数ジェネレーターのガイド。ここでは、Java の関数について例を挙げて説明し、2 つの異なるジェネレーターについて例を挙げて説明します。

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
