01_LinkedHashMap
键的数据结构是列表和哈希表,键有序且唯一。列表保证有序哈希表保证唯一。
案例演示
package LinkedHashMapDemo;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
public class LinkedHashMapTest01 {
public static void main(String[] args) {
LinkedHashMap<String, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("隆多", "戴维斯");
linkedHashMap.put("杜拉德利", "麦基");
linkedHashMap.put("库茨玛", "霍华德");
linkedHashMap.put("JR", "詹姆斯");
System.out.println(linkedHashMap);
Set<Map.Entry<String, String>> entries = linkedHashMap.entrySet();
for (Map.Entry<String, String> entry : entries) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+","+value);
}
}
}
02_TreeMap
TreeMap 键不允许插入null
TreeMap: 键的数据结构是红黑树,可保证键的排序和唯一性
排序分为自然排序和比较器排序
线程是不安全的效率比较高
遍历排序按照字母
案例演示:遍历按照字母
package TreemapDemo01;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class TreemapTest02 {
public static void main(String[] args) {
TreeMap<String, Integer> treeMap = new TreeMap<>();
treeMap.put("詹姆斯",35);
treeMap.put("韦德",34);
treeMap.put("安东尼",30);
treeMap.put("保罗",32);
//遍历
Set<Map.Entry<String, Integer>> entries = treeMap.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println(key+","+value);
}
/* 保罗,32
安东尼,30
詹姆斯,35
韦德,34
*/
//上述案例可知,Treemap集合是由字母开始排序
}
}
案例演示
package TreemapDemo01;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class TreemapTest01 {
public static void main(String[] args) {
/* A:
案例演示:
需求:统计字符串中每个字符出现的次数
"aababcabcdabcde",
获取字符串中每一个字母出现的次数要求结果:
a(5) b(4) c(3) d(2) e(1)
结果的输出方式为Map集合。
*/
Scanner scanner = new Scanner(System.in);
System.out.println("输入字符串");
String str = scanner.nextLine();
HashMap<Character, Integer> hashMap = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
//得到字符串的元素
char c = str.charAt(i);
//判断集合中的元素,如果相等就在总值加1
//如果不相等,就加入到集合中
if (!hashMap.containsKey(c)) {
hashMap.put(c, 1);
} else {
//键相同值覆盖
Integer value = hashMap.get(c);
value++;
hashMap.put(c, value);
}
}
//遍历集合拼串
//
StringBuffer stringBuffer = new StringBuffer();
Set<Map.Entry<Character, Integer>> entries = hashMap.entrySet();
for (Map.Entry<Character, Integer> entry : entries) {
Character key = entry.getKey();
Integer value = entry.getValue();
stringBuffer.append(key).append("(").append(value).append(")");
}
System.out.println(stringBuffer.toString());
}
}
03_集合嵌套
03.1_案例演示: 集合嵌套之HashMap嵌套HashMap
package NestDemo01;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class NestTest01 {
public static void main(String[] args) {
// 集合嵌套之HashMap嵌套HashMap
/*基础班
张三 20
李四 22
就业班
王五 21
赵六 23
*/
HashMap<String, Integer> basedhashMap = new HashMap<>();
basedhashMap.put("詹姆斯",35);
basedhashMap.put("韦德",34);
HashMap<String, Integer> jobHashMap = new HashMap<>();
jobHashMap.put("霍华德",32);
jobHashMap.put("戴维斯",28);
HashMap<String, HashMap<String, Integer>> maxMap = new HashMap<>();
maxMap.put("基础班",basedhashMap);
maxMap.put("就业班",jobHashMap);
//遍历
Set<Map.Entry<String, HashMap<String, Integer>>> entries = maxMap.entrySet();
for (Map.Entry<String, HashMap<String, Integer>> entry : entries) {
String key = entry.getKey();//遍历键
System.out.println(key);
HashMap<String, Integer> minMap = entry.getValue();
Set<Map.Entry<String, Integer>> entries1 = minMap.entrySet();
for (Map.Entry<String, Integer> minentry : entries1) {
String key1 = minentry.getKey();//小集合键
Integer value = minentry.getValue();//小集合值
System.out.println("\t"+key1+"\t"+value);
}
}
System.out.println("------------------------");
Set<String> keySet = maxMap.keySet();
for (String key : keySet) {
System.out.println(key);
HashMap<String, Integer> minMap = maxMap.get(key);
Set<String> minkeySet = minMap.keySet();
for (String minkey : minkeySet) {
Integer integer = minMap.get(minkey);
System.out.println("\t"+minkey+"\t"+integer);
}
}
}
}
03.2_集合嵌套之HashMap嵌套ArrayLis
案例演示
集合嵌套之HashMap嵌套ArrayList
假设HashMap集合的元素是ArrayList。有3个。
每一个ArrayList集合的值是字符串。
package NestDemo01;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class NestTest02 {
public static void main(String[] args) {
/*集合嵌套之HashMap嵌套ArrayList
三国演义
吕布
周瑜
笑傲江湖
令狐冲
林平之
神雕侠侣
郭靖
杨过
*/
ArrayList<String> sgList = new ArrayList<>();
sgList.add("吕布");
sgList.add("周瑜");
ArrayList<String> xaList = new ArrayList<>();
xaList.add("令狐冲");
xaList.add("林平之");
ArrayList<String> sdList = new ArrayList<>();
sdList.add("郭靖");
sdList.add("杨过");
HashMap<String, ArrayList<String>> maxMap = new HashMap<>();
maxMap.put("三国演义",sgList);
maxMap.put("笑傲江胡",xaList);
maxMap.put("神雕侠侣",sdList);
//遍历1
Set<Map.Entry<String, ArrayList<String>>> maxentries = maxMap.entrySet();
for (Map.Entry<String, ArrayList<String>> maxentry : maxentries) {
String key = maxentry.getKey();
System.out.println(key);
ArrayList<String> minMap = maxentry.getValue();
for (String value : minMap) {
System.out.println("\t"+value);
}
System.out.println("------------------");
//遍历2
Set<String> keySet= maxMap.keySet();
for (String keys :keySet) {
System.out.println(keys);
ArrayList<String> min1Map = maxMap.get(keys);
for (String str : min1Map) {
System.out.println("\t"+str);
}
}
}
}
}
03.3_集合嵌套之ArrayList嵌套HashMap
案例演示
集合嵌套之ArrayList嵌套HashMap
假设ArrayList集合的元素是HashMap。有3个。
每一个HashMap集合的键和值都是字符串。
package NestDemo01;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class NestTest03 {
public static void main(String[] args) {
/*集合嵌套之ArrayList嵌套HashMap
周瑜---小乔
吕布---貂蝉
郭靖---黄蓉
杨过---小龙女
令狐冲---任盈盈
林平之---岳灵珊
*/
HashMap<String, String> sgMap = new HashMap<>();
sgMap.put("周瑜","小乔");
sgMap.put("吕布", "貂蝉");
HashMap<String, String> sdMap = new HashMap<>();
sdMap.put("郭靖", "黄蓉");
sdMap.put("杨过", "小龙女");
HashMap<String, String> xaMap = new HashMap<>();
xaMap.put("令狐冲", "任盈盈");
xaMap.put("林平之", "岳灵珊");
ArrayList<HashMap<String, String>> arrHashMaps = new ArrayList<>();
arrHashMaps.add(sgMap);
arrHashMaps.add(sdMap);
arrHashMaps.add(xaMap);
//遍历
for (HashMap<String, String> arrHashMap : arrHashMaps) {
Set<Map.Entry<String, String>> entries = arrHashMap.entrySet();
for (Map.Entry<String, String> entry : entries) {
String key = entry.getKey();
String value = entry.getValue();
System.out.println(key+"----"+value);
}
}
System.out.println("-------------------------");
for (HashMap<String, String> arrHashMap : arrHashMaps) {
Set<String> keySet = arrHashMap.keySet();
for (String key : keySet) {
String value = arrHashMap.get(key);
System.out.println(key+"----"+value);
}
}
}
}