JAVA集合类(4):Map

Map(映射):Map的KeySet()方法会返回key的集合,因为Map的键不能重复,因此keySet()方法的返回类型是Set;而Map的值是可以重复的,因此values()方法的返回类型Collection,可以容纳重复的元素。

 

package com.test.array;

import java.util.HashMap;

public class HashMapTest {
	public static void main(String[] args) {
		HashMap map = new HashMap();
		map.put("a", "zhangsan");
		map.put("b", "lisi");
		map.put("c", "wangwu");
		map.put("a", "zhaoliu");
		
		System.out.println(map);
	}
}

 

打印出的结果是:

{a=zhaoliu, c=wangwu, b=lisi}

没打印出zhangsan,是因为键a的值被zhaoliu覆盖了。

 

如果从一个不存在的键中获取值,则会打印出null

String value = (String) map.get("s"); //s并不存在
System.out.println(value);

 

通过迭代key值取得value

package com.test.array;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class KeyIterTest {
	public static void main(String[] args) {
		HashMap map = new HashMap();
		map.put("a", "aa");
		map.put("b", "bb");
		map.put("c", "cc");
		map.put("d", "dd");

		Set keySet = map.keySet();
		for (Iterator iters = keySet.iterator(); iters.hasNext();) {
			String key = (String)iters.next();
			String value = (String)map.get(key);
			System.out.println(key +"="+value);
		}
	}
}

 

Map的entrySet() 方法返回一个Set集合,里面包含Map的键值对的对象。

Entry是HashMap的一个内部类。可以通过获取entry来取得HashMap的键与值。

package com.test.array;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class HashMapTest {
	public static void main(String[] args) {
		HashMap map = new HashMap();
		map.put("a", "zhangsan");
		map.put("b", "lisi");
		map.put("c", "wangwu");
		map.put("a", "zhaoliu");
		
		Set set = map.entrySet();
		for(Iterator iter = set.iterator();iter.hasNext();){
			Map.Entry entry = (Map.Entry)iter.next();
			String key = (String)entry.getKey();
			String value = (String)entry.getValue();
			System.out.println(key +" = "+value);
		}
	}
}

 

 TreeMap:TreeMap是对键进行排序。

3,使用Map生成随机数排序测试:

随机生成50个数字(整数),每个数字的范围是【10,50】,统计每个数字出现的次数以及出现次数最多的数字与它的个数,最后将每个数字及其出现次数打印出来。如果某个出现的次数是0,则不打印它。打印时按照数字的升序排列。

 

package com.test.array;

import java.util.List;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Iterator;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import java.util.TreeMap;

public class HashMapTest {
	public static void main(String[] args) {
		Random random = new Random();
		Map map = new TreeMap();

		for (int i = 0; i < 50; i++) {
			int number = random.nextInt(41) + 10;
			if (map.get(new Integer(number)) != null) { // 不是第一次出现,已经有值了
				map.put(new Integer(number), ((Integer) map.get(new Integer(
						number))).intValue() + 1);
			} else { // 第一次出现,将其值设为1
				map.put(new Integer(number), new Integer(1));
			}
		}

		// 打印结果 格式为 "键=值"
		Set set = map.entrySet();
		List list = new ArrayList();
		// 打印出现次数最多的数字
		Collection cols = map.values();
		Integer maxNumber = (Integer) Collections.max(cols);
		for (Iterator iter = set.iterator(); iter.hasNext();) {
			Map.Entry entry = (Map.Entry) (iter.next());
			Integer value = (Integer) entry.getValue();
			if (maxNumber.intValue() == value.intValue()) {
				list.add(entry.getKey());
			}
			System.out.println(entry.getKey() + " =" + entry.getValue());
		}
		System.out.println("出现最多次数为: "+maxNumber.intValue());
		System.out.print("这些数字分别是:");
		for (int k = 0; k < list.size(); k++) {
			System.out.print(list.get(k)+" ");
		}
	}
}

 

你可能感兴趣的:(java集合)