目录

一.map集合的结构

二.HashMap集合的特点

三.HashMap中的常用方法

         1.put(K key, V value)

         2.get(Object key)

         3.size()

         4.clear() 

         5.isEmpty () 

         6.remove(Object key)

四.HashMap中的遍历

1.使用values()  方法

2.使用keySet()  

3. 使用entrySet()方法

4.使用iterator()方法


一.map集合的结构

集合有众多种类型,map就是其中一种,其结构大致如下图所示

map大致分为两大类,一种是Hashtable类,其有一个子类Properties;另一种是AbstractMap抽象类,其含有两个子类,一个是HashMap,一个是TreeMap。

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_Test

以下讲述的是HashMap集合

二.HashMap集合的特点

以下是一个HashMap集合的创建及HashMap包的引用:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
	}
}

这里可以看出HashMap集合与ArrayList集合的不同之处就是其泛型有两个,这就是HashMap集合的第一个特点:

1.key-value

HashMap集合中的元素都是key-value的格式,也就是说第一个泛型是用于标志第二个泛型的,比如上面那段代码,是通过一个String类的数据作为标志,代表着第二个Integer类型的数据。

2.泛型的类型

泛型是用于指明集合中存储的元素的类型的,但是如果集合中的数据是基本数据类型呢?数据存入当然没问题,但是泛型却不能为基本数据类型,要写该数据类型的包装类型,以下是基本数据类型所对应的包装类类型:

byte——Byte
short——Short
int-Integer 
float-Float 
double-Double 
boolean-Boolean 
char-Character

3.key不能重复

在HashMap集合中的元素,key是不能重复的,因为key是用来标志value的,一旦key重复了就会将原来的key所标志的value的覆盖。

具体的例子会在以下叙述的get方法中演示。

4.HashMap集合中的存储无序

与ArrayList集合中的存储不同,ArrayList中的元素是按照存入的顺序存储的,而HashMap集合中元素的存储是无序的。

具体的例子会在以下叙述的遍历中演示。

三.HashMap中的常用方法

1.put(K key, V value)

该方法用于向HashMap中添加元素key - value,其使用实例如下:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
	}
}

2.get(Object key)

该方法返回指定key所标志的值,没有该key对应的值则返回 null,其使用实例如下:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		int score=map.get("Tom");
		System.out.println(score);
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_java_02

这时如果用put方法赋一个重复的key,再打印Tom的value,结果如下,说明一旦key重复了就会将原来的key所标志的value的覆盖:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		map.put("Tom",0);
		int score=map.get("Tom");
		System.out.println(score);
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_System_03

3.size()

返回Map集合中数据数量,其使用实例如下:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		System.out.println(map.size());
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_Test_04

4.clear() 

该方法清空Map集合,其使用实例如下:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		System.out.println(map.size());
		map.clear();
		System.out.println(map.size());
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_Test_05

5.isEmpty () 

该方法用于判断Map集合中是否有数据,如果没有则返回true,否则返回false,其使用实例如下:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		System.out.println(map.isEmpty());
		map.clear();
		System.out.println(map.isEmpty());
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_System_06

6.remove(Object key)

该方法用于删除Map集合中键为key的数据并返回其所对应value值,其使用实例如下:

package map;

import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		System.out.println(map.size());
		int score=map.remove("Tom");
		System.out.println(score);
		System.out.println(map.size());
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_Test_07

四.HashMap中的遍历

1.使用values()  方法

该方法的作用是,返回Map集合中所有value组成的以Collection数据类型格式数据,所以遍历时可以将新建的Collection集合遍历即可:

package map;

import java.util.Collection;
import java.util.HashMap;

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		map.put("Lucy", 90);
		map.put("Jim", 91);
		Collection<Integer> con = map.values();
		for (int score : con) {
			System.out.println(score);
		}
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_java_08

2.使用keySet()  

 该方法的作用是,返回Map集合中所有key组成的Set集合,所以遍历时也可以将新建的Set集合遍历:

package map;

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

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		map.put("Lucy", 90);
		map.put("Jim", 91);
		Set<String> set = map.keySet();
		for (String key : set) {
			System.out.println(key+":"+map.get(key));
		}
	}
}

当然,创建完Set集合后也可以用iterator()方法创建Iterator迭代器进行遍历:

package map;

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

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		map.put("Lucy", 90);
		map.put("Jim", 91);
		Set<String> set = map.keySet();
		Iterator<String> iterator=set.iterator();
		while(iterator.hasNext()) {
			String key=iterator.next();
			System.out.println(key+":"+map.get(key));
		}
	}
}

结果都是一样的:

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_System_09

3. 使用entrySet()方法

该方法的作用是,将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合,这时Set集合中存放Entry对象,Entry集合中存放key—value,所以对整个Entry类集合遍历,就可以打印每一个entry中的key和value了:

package map;

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

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		map.put("Lucy", 90);
		map.put("Jim", 91);
		Set<Entry<String,Integer>> set=map.entrySet();
		for(Entry<String,Integer> entry:set) {
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
	}
}

4.使用iterator()方法

在使用entrySet()方法新建Set集合后,还可以用Iterator迭代器遍历Entry对象,然后用每一个entry打印key和value:

package map;

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

public class Test {

	public static void main(String[] args) {
		HashMap<String,Integer> map=new HashMap<String,Integer>();
		map.put("Tom",100);
		map.put("Lucy", 90);
		map.put("Jim", 91);
		Set<Entry<String,Integer>> set=map.entrySet();
		Iterator<Entry<String,Integer>> iterator=set.iterator();
		while(iterator.hasNext()) {
			Entry<String,Integer> entry=iterator.next();
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
	}
}

java中从HashMap中获取到的键集合怎么保证有序 hashmap获取元素的方法_Test_10