Map集合:双列型,存放数据无序,key不可重复,value可以重复
HashMap:底层是哈希表,。key不可重复,value可以重复。key对应的记录无序
/
package com.java.demo;
import java.util.HashMap;
import java.util.Map;
public class HashMap1 {
public static void main(String[] args) {
//Map bookMap=new HashMap();//没有指定的时候默认为Object类型
Map<Integer,String> bookMap=new HashMap();
//往集合中添加数据
bookMap.put(1,"hhh哈哈哈");
String value= bookMap.put(1, "sdhf后发送");//key一样,返回的是上一条的value
System.out.println(value);//hhh哈哈哈
//两个key一样时,会自动覆盖后面那条(sdhf后发送) 如果去掉bookMap.put(1,"hhh哈哈哈");这条
//则value1的上一条没有值,没有值就返回null
Map<Integer,String> boMap=new HashMap();
boMap.putAll(bookMap);//把另一个集合添加进来
}
}
/
/
package com.java.demo;
import java.util.HashMap;
import java.util.Map;
public class HashMap2 {
public static void main(String[] args) {
Map<Integer,String> bookMap =new HashMap();
//往Map集合里添加数据
bookMap.put(1,"大星");
bookMap.put(2,"狗子");
bookMap.put(3,"大头儿子");
bookMap.put(4,"熊大");
//获取数据
//获取单个数据,根据key获取value;;若value没有值,则返回null
String value1=bookMap.get(1);
System.out.println("value1:"+value1);//value1:大星
String value2=bookMap.get(3);
System.out.println("value2:"+value2);//value2:大头儿子
String value3=bookMap.get(10);
System.out.println("value3:"+value3);//value3:null
//判断Map集合中key或value是否存在(containsValue)、(containsKey)
//判断bookMap中是否存在指定的value
boolean falg1= bookMap.containsValue("大星");
System.out.println("flag1="+falg1);//flag1=true
}
}
/
遍历集合:
入遍历里不能使用外面定义的数据,所以要使用高级for循环
for(数据类型 变量名:集合名或数组名){}
/
Entry:条目(包含key和value)
List aList =new Set 或 ArrayList();
for(Entry temp:aList){}
for(Map.Entry<key类型,Value类型> entry:Map集合名.entrySet()){ //entry:Map集合名 此处的entry为变量名
Systen.out.println(entry);
}
/
/
package com.java.demo;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class HashMap3 {
public static void main(String[] args) {
Map<Integer,String> bookMap =new HashMap();
//往Map集合里添加数据
bookMap.put(1,"大星");
bookMap.put(2,"狗子");
bookMap.put(3,"大头儿子");
bookMap.put(4,"熊大");
//遍历Map集合
//bookMap.forEach((temp1,temp2)->{};
//或者:
bookMap.forEach((key,value)->{//集合里有多少条数据就会自动循环多少遍
//System.out.println(key+","+value);
});
/*Set<Map.Entry<Integer, String>> entrySet = bookMap.entrySet();
for (Map.Entry<Integer,String> entry:entrySet){
System.out.println(entry);
}*/
for (Map.Entry<Integer,String> entry:bookMap.entrySet()) {
// System.out.println(entry);
//entry中有连个方法,分别获取key和value
Integer key=entry.getKey();
String value=entry.getValue();
System.out.println(key+","+value);
}
}
}
/
package com.java.demo;
import java.util.HashMap;
import java.util.Map;
public class HashMap4 {
//Character字符类型
public static void main(String[] args) {
Map<Character,Integer> charMap=new HashMap<>();
charMap.put('a',23);
charMap.put('b',54);
charMap.put('c',34);
charMap.put('d',44);
for (Map.Entry<Character,Integer> entry:charMap.entrySet()){
System.out.println(entry);
}
/* a=23
b=54
c=34
d=44*/
}
}
/
删除:由于HashMap底层是哈希表,就没有下标,只能通过key删除对应的整个条目记录
public static void main(String[] args) {
Map<Character,Integer> charMap=new HashMap<>();
charMap.put('a',23);
charMap.put('b',54);
charMap.put('c',34);
charMap.put('d',44);
//删除操作
charMap.remove('c');
for (Map.Entry<Character,Integer> entry:charMap.entrySet()){
System.out.println(entry);
}
// a=23
// b=54
// d=44
/
/
TreeMap:底层是二叉树。key不可以重复,value可以重复。可以根据key进行排序(key要实现Comparable、Comparator 接口才可以排序)
TreeMap方法与HashMap一样
TreeMap可以根据key进行排序,HashMap也可以,但是两者排的结果又不太一样
/
/
package com.java.demo;
import java.util.Map;
import java.util.TreeMap;
public class TreeMapDemo {
public static void main(String[] args) {
Map<String,Integer> tMap=new TreeMap();
tMap.put("c",32);
tMap.put("d",32);
tMap.put("b",32);
tMap.put("aa",32);
tMap.put("a",32);
tMap.put("ab",32);
for (Map.Entry<String,Integer> entry:tMap.entrySet()){
System.out.println(entry);
}
/* a=32
aa=32
ab=32
b=32
c=32
d=32*/
}
}