目录
一.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。
以下讲述的是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);
}
}
这时如果用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);
}
}
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());
}
}
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());
}
}
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());
}
}
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());
}
}
四.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);
}
}
}
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));
}
}
}
结果都是一样的:
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());
}
}
}