目次
1) Map インターフェイス
1. HashMap 内の Entry オブジェクトは順序付けされていません。 Map の重要な実装クラスであり、最も一般的に使用されます。これはハッシュ テーブル
マップ内のキーと値のペアを削除するには、remove(object key) メソッドを呼び出します。以下は例です。使用方法:
マップ内のキーと値のペアを変更するには 2 つの方法があります。1 つ目は次のとおりです。
 五、总结
ホームページ Java &#&チュートリアル Map&HashMapde の簡単な紹介

Map&HashMapde の簡単な紹介

Jul 23, 2017 pm 05:44 PM
java フレーム 集める

1. Map と HashMap の概要

1) Map インターフェイス

1. Map インターフェイスは、要素がキーと値のペアの形式で保存されるマッピング関係を提供します。キーに基づいて値をすばやく見つけることができます。 Key-Value は任意のオブジェクトにすることができ、Entry タイプのオブジェクト インスタンスとして存在します。

2.キーは繰り返すことができませんが、値は繰り返すことができます。 Key-Value は null にすることができますが、null にできるキーは 1 つだけです。

3.Map はジェネリックス、Map をサポートします

4.各キーは最大 1 つの値にのみマップできます

5.Map インターフェイスは、キー値セット、値値セット、およびエントリ (キー) を返します。値ペア) コレクションメソッド

6. put、remove2) HashMap 実装クラス

1. HashMap 内の Entry オブジェクトは順序付けされていません。 Map の重要な実装クラスであり、最も一般的に使用されます。これはハッシュ テーブル

2 に基づいて実装されます。キー値と値値の両方を null にすることができますが、HashMap はキー値が null のマップを 1 つだけ持つことができます。 (キーを繰り返すことはできません) )

2. 学生コースの選択 - Map を使用して学生を追加します

ケース関数の説明

1. Map を通じて学生情報を管理します。キーは学生 ID です。 value は Student オブジェクトです。

2. キーボードから生徒情報を入力します

3. コレクション内の生徒情報を追加、削除、確認します

まず、Map の使用をテストするために StuMap クラスを作成します。以下の通り:

 1 /** 2  * 学生类的Map集合类 3  * 
 4  * @author acer 5  * 6  */ 7 public class StuMap { 8     // 用来承装学生类型对象 9     private Map<String, Student> students;10     private static Scanner in;11     {12         in = new Scanner(System.in);13     }14 15     public StuMap() {16         students = new HashMap<String, Student>();17 18     }19    //省略方法,下面的方法会逐个列出20 }
ログイン後にコピー

>>>>>>>>>>>>>>>>>>> ;>>>>>>>>>>>>>>>> は、マップへのオブジェクトの追加で使用するインターフェイスとは異なります。

put(key, value)

メソッド。以下は使用例です:

 1   /* 2      * 添加学生类 输入学生id, 3      * 判断是否被占用 若未被占用,则输入姓名,创建新的学生对象,并且把该对象添加到Map中 4      * 否则,则提示已有该id 5      */ 6     public void AddStu() { 7         System.out.println("请输入要添加的学生id:"); 8         String Id = in.next();// 接受输入的id 9         Student st=students.get(Id);10         if(st==null){11 12             System.out.println("请输入要添加的学生姓名:");13             String name = in.next();// 接受输入的name14             this.students.put(Id, new Student(Id, name));15         }else{16             System.out.println("此Id已被占用!");17         }18 19     }
ログイン後にコピー
次に、次のような出力を出力するテスト関数を作成します:

 1 /* 2      * 打印学生类 3      * 
 4      */ 5     public void PrintStu() { 6         System.out.println("总共有"+this.students.size()+"名学生:"); 7         //遍历keySet 8         for (String s : this.students.keySet()) { 9             Student st=students.get(s);10             if(st!=null){11             System.out.println("学生:" + students.get(s).getId() + "," + students.get(s).getName());12             }13         }14     }
ログイン後にコピー
上記の例では、Map の

keySet() を使用して、 Map してから if を使用します。出力を判断するには、Map の entrySet() メソッドを使用して、次のような Map 内のキーと値のペアのエントリを返すこともできます。

 1 /* 2      * 通过entrySet方法遍历Map 3      */ 4     public void EntrySet(){ 5         Set<Entry<String, Student>> entrySet =students.entrySet(); 6         for(Entry<String, Student> entry:entrySet){ 7             System.out.println("取得建:"+entry.getKey()); 8             System.out.println("对应的值:"+entry.getValue().getName()); 9 10         }11     }
ログイン後にコピー
最後に、メインを使用します。これらの関数を呼び出して効果を確認します

1 public static void main(String[] args) {2         StuMap stu = new StuMap();3         for (int i = 0; i < 3; i++) {4             stu.AddStu();5         }6         stu.PrintStu();7         stu.EntrySet();8     }
ログイン後にコピー

コード分析:

1.student.get(ID) は、Map の get() メソッドを使用して、値が ID である学生が存在するかどうかを検出します。 nullを返します。

ここではマップ内のキー値を生徒の ID 値に設定するため、この方法でキー値が生徒の他の属性である場合は別の問題になります。 !

2.keySet() メソッドは、すべてのキーの Set コレクションを返します。

3.keyset() は、Map 内のすべてのキーをセットの形式で返します。これは Set コレクションで受け取ることができます。HashMap 内のマッピングは順序付けされていません。

3.Map は、entrySet() メソッドを使用して Map 内の Entry を返すこともできます。また、

getKey() メソッドと

getValue() メソッドを呼び出して、キーと値のペアはそれぞれ " key" と "value"実行結果:

3. 学生コースの選択 - マップ内の学生を削除します

マップ内のキーと値のペアを削除するには、remove(object key) メソッドを呼び出します。以下は例です。使用方法:

 1 /* 2      * 删除map中映射 3      */ 4     public void RemoveStu(){ 5         do{ 6         System.out.println("请输入要删除的学生id:"); 7         String Id = in.next();// 接受输入的id 8         Student st=students.get(Id); 9         if(st==null){10             System.out.println("此id不存在!");11             12         }else{13             this.students.remove(Id);14             System.out.println("成功删除"+st.getId()+","+st.getName()+"同学");15             break;16         }17         }while(true);18     }
ログイン後にコピー

実行結果:

4. 学生のコースの選択 - マップ内の学生を変更します

マップ内のキーと値のペアを変更するには 2 つの方法があります。1 つ目は次のとおりです。

put メソッド

を使用します。実際、add メソッド内に置かれます。使用方法は add と同じです。ここでの本質は、put を使用して元のデータを上書きする、つまり変更することです。

 1 /* 2      * 利用put方法修改Map中的value值 3      */ 4     public void ModifyStu(){ 5         do{ 6             System.out.println("请输入要修改的学生id:"); 7             String Id = in.next();// 接受输入的id 8             Student st=students.get(Id); 9             if(st==null){10                 System.out.println("此id不存在!");11                 12             }else{13                 System.out.println("学生原来的姓名:"+st.getName()+",请输入修改后的姓名:");14                 String name = in.next();// 接受输入的name15                 st=new Student(Id,name);16                 this.students.put(Id,st);17                 System.out.println("成功修改!修改后的学生为:"+st.getId()+","+st.getName()+"同学");18                 break;19             }20             }while(true);21         22     }
ログイン後にコピー
Mapにはputメソッドの他にreplaceというメソッドが用意されており、ご存知の通り「置換」という意味です。 replace メソッドは put メソッドと同じように使用されます。その内部ソース コードは次のとおりです:

1 if (map.containsKey(key)) {2      return map.put(key, value);3  } else4      return null;5
ログイン後にコピー

可以看出replace方法就是调用put方法来完成修改操作的,但是我们为了和添加put进行区分,最好在使用修改的时候用replace方法进行修改。这样的代码可读性和维护性就增强了。

那么使用replace修改Map中的value值如下:(推荐使用replace方法)

 1 /* 2      * 利用replace方法修改Map中的value值 3      */ 4     public void Modify(){ 5         do{ 6             System.out.println("请输入要修改的学生id:"); 7             String Id = in.next();// 接受输入的id 8             Student st=students.get(Id); 9             if(st==null){10                 System.out.println("此id不存在!");11                 12             }else{13                 System.out.println("学生原来的姓名:"+st.getName()+",请输入修改后的姓名:");14                 String name = in.next();// 接受输入的name15                 st=new Student(Id,name);16                 this.students.replace(Id, st);17                 System.out.println("成功修改!修改后的学生为:"+st.getId()+","+st.getName()+"同学");18                 break;19             }20             }while(true);21     }
ログイン後にコピー

运行结果:


五、总结

Map -特点:元素成对出现,key-value,是映射关系,key不能重复,但value可以重复,也就是说,可以多key对一个value。支持泛型如Map

-实现类:HashMap是最常用的,HashMap中是无序排列,其元素中key或value可为null(但只能有一个为null)。

-声明(泛型)举例: 在类中声明 public Map<类型1, 类型2> xxx; 然后再构造方法中this.xxx = new HashMap<类型1, 类型2();

-获取:yy temp = xxx.get(key)

-添加:xxx.put( key(xx型), zz(yy型) );

-返回map中所有key(返回是set型集合形式) set xxxxx = xxx.keyset(); 用于遍历。

-返回map中所有entry对(key-value对)(返回是set型集合形式) set> xxxxx = xxx.entrySet(); 同样用于遍历。 遍历时:for(Entry 元素: xxxxx)

-删除:xxx.remove(key);

-修改可以用put,当put方法传入的key存在就相当于是修改(覆盖);但是推荐使用replace方法!

以上がMap&HashMapde の簡単な紹介の詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

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つの操作を実行する端末操作です。その設計意図はです

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能 PHP対Python:コア機能と機能 Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHPの影響:Web開発など PHPの影響:Web開発など Apr 18, 2025 am 12:10 AM

phphassiblasifly-impactedwebdevevermentandsbeyondit.1)itpowersmajorplatformslikewordpratsandexcelsindatabase interactions.2)php'sadaptableability allowsitale forlargeapplicationsusingframeworkslikelavel.3)

PHP対Python:ユースケースとアプリケーション PHP対Python:ユースケースとアプリケーション Apr 17, 2025 am 12:23 AM

PHPはWeb開発およびコンテンツ管理システムに適しており、Pythonはデータサイエンス、機械学習、自動化スクリプトに適しています。 1.PHPは、高速でスケーラブルなWebサイトとアプリケーションの構築においてうまく機能し、WordPressなどのCMSで一般的に使用されます。 2。Pythonは、NumpyやTensorflowなどの豊富なライブラリを使用して、データサイエンスと機械学習の分野で驚くほどパフォーマンスを発揮しています。

PHP:多くのウェブサイトの基礎 PHP:多くのウェブサイトの基礎 Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

See all articles