ホームページ > Java > &#&チュートリアル > マップコレクションとは何ですか?マップコレクションの特徴

マップコレクションとは何ですか?マップコレクションの特徴

PHP中文网
リリース: 2017-06-20 10:15:04
オリジナル
8085 人が閲覧しました

マップセットの特徴:
1. 値を割り当てるときは、キーと値を同時に割り当てる必要があります。
2. 順序付けされていないセットです。要素が一致していない可能性があります)
3.key 値を繰り返すことはできませんが、値は繰り返すことができます
4. 1 つのキーは 1 つの vlaue にのみ対応できます
5. コレクションを定義する場合、データ型のキーと値は同じものを使用できます。データ型、または異なるデータ型を使用できます

マップ コレクションの機能
java.util.Mapインターフェイス: 2 列のセットであるセット

マップ セットの最初の方法traversal
Map セット トラバーサルの最初の方法: キーによる値の検索 Map コレクションにはメソッドがあります: keySet
Set keySet() は、このマップに含まれるキーの Set ビューを返します。 Map コレクションのキーを Set コレクションに保存します

Map コレクションを走査する手順: 1. Map コレクションを定義し、コレクションに要素を追加します
2. Map コレクションの keySet メソッドを呼び出してキーを追加しますMap コレクション キーは Set コレクションに保存されます
3. Set コレクションを走査し、Map セットのすべてのキーを取得します
4. 取得したキーを通じて、Map set メソッド get を使用して値を見つけます

 1 public static void main(String[] args) { 2         //1.定义一个Map集合,往集合中添加元素 3         Map<String,String> map = new HashMap<String,String>(); 4         map.put("a", "1"); 5         map.put("b", "2"); 6         map.put("c", "3"); 7         map.put("d", "4"); 8         //2.调用Map集合中的方法keySet,把Map集合中的健存储到一个Set集合中 9         Set<String> set = map.keySet();10         //System.out.println(set.getClass());11         //3.遍历Set集合,获取Map集合所有的健12         //使用迭代器遍历13         Iterator<String> it = set.iterator();14         while(it.hasNext()){15             String key = it.next();16             //4.通过获取到的健,使用Map集合的方法get查找值17             String value = map.get(key);18             System.out.println(key+"..."+value);19         }20         System.out.println("----------------");21         //使用增强for遍历22         for(String key : set){23             //4.通过获取到的健,使用Map集合的方法get查找值24             String value = map.get(key);25             System.out.println(key+"..."+value);26         }27         System.out.println("----------------");28         //使用增强for遍历29         for(String key : map.keySet()){30             //4.通过获取到的健,使用Map集合的方法get查找值31             String value = map.get(key);32             System.out.println(key+"..."+value);33         }34     }
ログイン後にコピー

Map セットのトラバース メソッドの 2 番目のタイプ Map コレクションをトラバースする 2 番目の方法: キーと値のペアをトラバースする方法
Map コレクションには次のメソッドがあります。 >entrySet() は、この関係のマップ セット ビューに含まれるマッピングを返します。

トラバーサル手順:
1. Map コレクションを定義し、そのコレクションに要素を追加します 2. Map コレクションのentrySet メソッドを呼び出し、Map コレクション内の各マッピング関係 (結婚証明書) を Set コレクションに追加します
3. Set コレクションを走査し、各マッピング関係 Entry を取得します
4. Entry のメソッド getKey および getValue を使用してキーと値を取得します

 1 public static void main(String[] args) { 2         //1.定义一个Map集合,往集合中添加元素 3         Map<String,String> map = new HashMap<String,String>(); 4         map.put("a", "1"); 5         map.put("b", "2"); 6         map.put("c", "3"); 7         map.put("d", "4"); 8         /* 9          * 2.调用Map集合中的方法entrySet,把Map集合中的每一个映射关系(结婚证)放入到Set集合中10          * 成员内部类的访问方式:外部类.内部类(Map.Entry)11          */12         Set<Map.Entry<String, String>> set = map.entrySet();13         //3.遍历Set集合,获取每一个映射关系Entry<K,V>14         //使用迭代器遍历Set集合15         Iterator<Map.Entry<String, String>> it = set.iterator();16         while(it.hasNext()){17             Map.Entry<String, String> entry = it.next();18             //4.使用Entry<K,V>中的方法getKey和getValue获取健和值19             String key = entry.getKey();20             String value = entry.getValue();21             System.out.println(key+"..."+value);22         }23         System.out.println("---------------------");24         //使用增强for遍历Set集合25         for(Map.Entry<String, String> entry:set){26             //4.使用Entry<K,V>中的方法getKey和getValue获取健和值27             String key = entry.getKey();28             String value = entry.getValue();29             System.out.println(key+"..."+value);30         }31         System.out.println("---------------------");32         //使用增强for遍历Set集合33         for(Map.Entry<String, String> entry:map.entrySet()){34             //4.使用Entry<K,V>中的方法getKey和getValue获取健和值35             String key = entry.getKey();36             String value = entry.getValue();37             System.out.println(key+"..."+value);38         }39     }
ログイン後にコピー
HashMap を使用してカスタム タイプのキー値を保存します
HashMap はカスタム タイプのキー値を保存します

カスタム タイプは Map コレクションの値として使用されます
カスタム タイプは Map コレクションのキーとして使用されます

覚えておいてください: カスタム タイプが hashCode と等しい場合をオーバーライドする場合
1. HashSet を使用しますカスタム型を保存するには
2. HashMap コレクションを使用します。カスタム型だけを使用します

Hashtable

マップ実装クラス Hashtable 基礎となるデータ構造はハッシュ テーブルであり、特性は hashMap と同じです
Hashtable はスレッドセーフなコレクションです実行速度が遅いです
HashMap スレッドアンセーフなコレクションであり、高速に実行されます

Hashtable は Vector と同じ運命をたどります。JDK1.2 以降、より高度な HashMap に置き換えられます

HashMap では null 値、null health を保存できます。

hashtable は null 値を保存できません。 null Jian


Hashtable 彼の子、サブクラスのプロパティはまだ開発段階でアクティブです

LinkedHashMap コレクション機能

java.util.LinkedHashMap は HashMap を拡張し、Map LinkedHashMap コレクション機能:
1. ハッシュテーブル + リンクリスト: 双方向リンクリストで反復順序を保証できる
2. キーを繰り返すことができない

Collections
java.util.Collections: Collection コレクションを操作するためのツールクラスツール クラスはすべて静的メソッドであり、クラス名を通じて直接使用できます

public static void sort(List list) // コレクション要素を並べ替えます
public static void shuffle(List list ) // コレクション要素の格納場所をシャッフルする

可変パラメータ

JDK1.5以降 新たな機能が登場

使用前提条件: メソッドパラメータのデータ型は決まっているが、パラメータの数は不明


形式を使用する
: 修飾子の戻り値の型 メソッド名(データ型…変数名) { }
...メソッドが同じデータ型のパラメータを複数受け取ることができることを表します
変数パラメータの最下層は とみなすことができます配列


可変パラメータに関する注意事項:
1. メソッドのパラメータは 1 つだけ使用できます。 可変パラメータ 2. メソッドに複数のパラメータがある場合、可変パラメータはパラメータリストの最後に記述する必要があります

 1 public static int add(int...arr){ 2         System.out.println(arr);//[I@104c575 3         System.out.println(arr.length); 4         int sum = 0; 5         //遍历可变参数-->遍历数组 6         for (int i : arr) { 7             sum +=i; 8         } 9         10         return sum;11     }
ログイン後にコピー
静的インポート

JDK1.5の新機能、静的インポート 開発コード量を削減
標準的な書き方、パッケージインポート時のみ使用可能
import static java.lang.System.out;最後に、静的メンバーである必要があります

package cn.itcast.demo05;

import java.util.ArrayList;

import java.util .Collections;

import java.util.HashMap;

  1 /*  2  * 带排序功能的斗地主案例:  3  *     1.准备牌  4  *     2.洗牌  5  *     3.发牌  6  *     4.排序  7  *     5.看牌  8  */  9 public class DouDiZhu { 10     public static void main(String[] args) { 11         //1.准备牌 12         //创建存储序号和拍面值的Map集合 13         HashMap<Integer,String> poker = new HashMap<Integer, String>(); 14         //创建存储序号的List集合 15         ArrayList<Integer> pokerNumber = new ArrayList<Integer>(); 16         //创建序号的数组 17         String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; 18         //创建花色数组 19         String[] colors = {"?","?","?","?"}; 20         //先把大王和小王存储到集合中 21         int index = 0; 22         poker.put(index, "大王"); 23         pokerNumber.add(index); 24         index++; 25         poker.put(index, "小王"); 26         pokerNumber.add(index); 27         index++; 28          29         //使用循环嵌套遍历两个数组,组成52张牌 30         for (String number : numbers) { 31             for (String color : colors) { 32                 //把组合包的牌添加到集合中 33                 poker.put(index, color+number); 34                 pokerNumber.add(index); 35                 index++; 36             } 37         } 38         //System.out.println(poker); 39         //System.out.println(pokerNumber); 40          41         //2.洗牌:洗的是牌的序号 42         //使用Collections中的方法shuffle 43         Collections.shuffle(pokerNumber); 44         //System.out.println(pokerNumber); 45          46         /* 47          * 3.发牌:发的也是牌的序号 48          *     a.定义4个集合存储3个玩家和1个底牌 49          *     b.遍历存储序号的List集合 50          *     c.使用list集合的索引%进行判断进行发牌 51          *     注意:先判断底牌 52          */ 53         //a.定义4个集合存储3个玩家和1个底牌 54         ArrayList<Integer> player01 = new ArrayList<Integer>(); 55         ArrayList<Integer> player02 = new ArrayList<Integer>(); 56         ArrayList<Integer> player03 = new ArrayList<Integer>(); 57         ArrayList<Integer> diPai = new ArrayList<Integer>(); 58          59         //b.遍历存储序号的List集合 60         for(int i=0; i<pokerNumber.size(); i++){ 61             //定义变量,接收排的序号 62             int number = pokerNumber.get(i); 63             //c.使用list集合的索引%进行判断进行发牌 64             if(i>=51){ 65                 //存储底牌 66                 diPai.add(number); 67             }else if(i%3==0){ 68                 //给玩家1发牌 69                 player01.add(number); 70             }else if(i%3==1){ 71                 //给玩家2发牌 72                 player02.add(number); 73             }else if(i%3==2){ 74                 //给玩家3发牌 75                 player03.add(number); 76             } 77         } 78         /*System.out.println(player01); 79         System.out.println(player02); 80         System.out.println(player03); 81         System.out.println(diPai);*/ 82          83         //4.排序 84         //使用Collections中的方法sort 85         Collections.sort(player01); 86         Collections.sort(player02); 87         Collections.sort(player03); 88         Collections.sort(diPai); 89          90         /*System.out.println(player01); 91         System.out.println(player02); 92         System.out.println(player03); 93         System.out.println(diPai);*/ 94          95         /* 96          * 5.看牌 97          */ 98         //调用看牌方法 99         lookPoker("刘德华",player01, poker);100         lookPoker("周润发",player02, poker);101         lookPoker("周星驰",player03, poker);102         lookPoker("底牌",diPai, poker);103     }104     105     /*106      * 定义一个看牌的方法107      * 返回值类型:void108      * 方法名:lookPoker109      * 参数列表:玩家和底牌的集合,存储排的Map集合110      * 使用查表法看牌:111      *     遍历List集合,获取Map集合key,使用key去Map集合中查找value112      */113     public static void lookPoker(String name,ArrayList<Integer> list,HashMap<Integer,String> map){114         System.out.print(name+":");115         //遍历List集合,获取Map集合key116         for (Integer key : list) {117             //使用key去Map集合中查找value118             String value = map.get(key);119             System.out.print(value+" ");120         }121         System.out.println();//换行122     }123 }
ログイン後にコピー

以上がマップコレクションとは何ですか?マップコレクションの特徴の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート