はじめに
日々の開発作業では、オブジェクトのコレクションからオブジェクト内の属性のコレクションを取得するなど、リスト内のデータを処理する問題に遭遇することがよくあります。以前は、各要素を走査し、それを取り出して別のコレクションに入れると考えていましたが、これはさらに面倒でしたが、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); }ここでは、map() メソッドが使用されています。入力パラメータは Student、出力パラメータはジェネリック型として String を持つストリームです。印刷後、結果
学生の名前をリストに入れます
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 サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

WebStorm Mac版
便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
