Java-Map類

4349 ワード

Mapクラス
Map:二列の集合は、主にキーパッドの対応関係があるデータを格納するためのインターフェースです.
Mapのいくつかのサブ実装クラス:HashMap,Hashtable,Linked HashMap,TreeMap
HashMap、Hashtableの違い:HashMapは同期されておらず、効率が高く、データが安全ではなく、Hashtableは同期されています.
Mapセットのデータ構造はキーだけと関係があります.
HashMap:下のデータ構造のハッシュ表、特徴:要素が無秩序であり、唯一、equalsとhashcodeを書き換える方法である.
常用方法:
public V put(key,value):データを追加して、初めて戻り値をnullに追加して、戻り値を前回の値に追加して、キーは同じで、値は上書きします.
public int size():集合長を取得する
public bootlean isEmpty():集合が空かどうかを判断する.
public bootlean containsKey:集合が指定キーを含むかどうかを判断する.
public bootlean containsValue:集合が指定値を含むかどうかを判断する.
public V get(key):キーの値から指定値を取得する.
public Set keySet():すべてのキーのセットを取得します.
public Set>entrySet():すべてのキーペアを取得し、対象セットのEntryには二つの方法があります.
public Collection values():すべての値の集合を取得する.
public void clear():すべての要素をクリアします.
public V remove(Key):キーの値からキーのペアを削除します.
関連コード:
import java.util.HashMap;

public class HashMapDemo {
	public static void main(String[] args) {
		HashMap hm=new HashMap();
		//  
		hm.put("  ", "   ");
		hm.put("  ", "  ");
		//    
		System.out.println("size:"+hm.size());
		//        
		System.out.println("isEmpty:"+hm.isEmpty());
		//          
		System.out.println("containsKey:"+hm.containsKey("   "));
		//          
		System.out.println("containsValue:"+hm.containsValue("  "));
		//        
		System.out.println("get:"+hm.get("  "));
		//      Set  
		System.out.println("keySet:"+hm.keySet());
		//        
		System.out.println("values:"+hm.values());
		//       ,   Entry
		System.out.println("entrySet:"+hm.entrySet());
		//         
		System.out.println("remove:"+hm.remove("  "));
		//      
		hm.clear();
		System.out.println(hm.entrySet());
	}
}
結果:
size:2
isEmpty:false contains Key:false containsValue:false get:立華奏keySet:[公生、音無]values:[薫、立華奏]entrySet:[公生=薫、音無=立華奏]remove:薫[]
Linked HashMap:一番下のデータ構造はチェーンとハッシュテーブルであり、特徴:要素が唯一かつ整然としており、順序指定は格納と取り出しが一致している.
関連コード:
import java.util.LinkedHashMap;
import java.util.Map.Entry;
import java.util.Set;

public class LinkedHashMapDemo {
	public static void main(String[] args) {
		LinkedHashMap lhm=new LinkedHashMap();
		lhm.put("  ", "   ");
		lhm.put("  ", "  ");
		//map     
		//  1:    Set  
		Set keySet = lhm.keySet();
		for(String key:keySet){
			System.out.println(key+"---"+lhm.get(key));
		}
		System.out.println("---------------------");
		
		//  2:      Set  
		Set> entrySet = lhm.entrySet();
		for(Entry entry:entrySet){
			System.out.println(entry.getKey()+"---"+entry.getValue());
		}
	}
}
結果:
音无---立華奏公生---薫-------音無---立華奏公生---薫
TreeSet:最下層は赤と黒の木の構造で、特徴:要素が唯一で、またデータを並べ替えて、自然の並べ替えとコンパレータの並べ替えを行って、comprableインターフェースを実現することを要求して、compreTo方法を書き直します.しかし、TreeSetはnullキーを追加することができません.
関連コード:
import java.util.Set;
import java.util.TreeMap;
public class TreeSetDemo {
	public static void main(String[] args) {
		TreeMap tm=new TreeMap();
		tm.put("   ", "  ");
		tm.put("  ", "  ");
		tm.put("1", null);
		//String    compareTo   
		Set keySet = tm.keySet();
		for(String key:keySet){
			System.out.println(key+"---"+tm.get(key));
		}
	}
}
結果:
1---null小薫---公生立華奏---音無
import java.util.TreeMap;
public class TreeSetDemo {
	public static void main(String[] args) {
		TreeMap tm=new TreeMap();
		tm.put(new Student("   ",20), "  ");
		tm.put(new Student("  ",20), "  ");
		System.out.println(tm);
	}
}
結果:
{Student[name=薫、age=20]=公生、Student[name=立華奏、age=20]=音無]