/** HashMap:是基于哈希表的Map接口实现。* 哈希表的作用是用来保证键的唯一性的。** HashMap* 键:String* 值:String*/
package Map;
import java.util.HashMap;
import java.util.Set;
public class HashMapDemo {public static void main(String[] args) {// 创建集合对象HashMap hm = new HashMap();// 创建元素并添加元素// String key1 = "it001";// String value1 = "马云";// hm.put(key1, value1);hm.put("it001", "马云");hm.put("it003", "马化腾");hm.put("it004", "乔布斯");hm.put("it005", "张朝阳");hm.put("it002", "裘伯君");hm.put("it001", "比尔盖茨");// 遍历Set set = hm.keySet();for (String key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}}
}
/*
it004---乔布斯
it003---马化腾
it005---张朝阳
it002---裘伯君
it001---比尔盖茨
进程已结束,退出代码0*/
/** HashMap* 键:Integer* 值:String*/
package Map;
import java.util.HashMap;
import java.util.Set;
public class HashMapDemo1 {public static void main(String[] args) {// 创建集合对象HashMap hm = new HashMap();// 创建元素并添加元素// Integer i = new Integer(27);// Integer i = 27;// String s = "林青霞";// hm.put(i, s);hm.put(27, "林青霞");hm.put(30, "风清扬");hm.put(28, "刘意");hm.put(29, "林青霞");// 下面的写法是八进制,但是不能出现8以上的单个数据hm.put(003, "hello");hm.put(006, "hello");hm.put(007, "hello");//hm.put(008, "hello");// 遍历Set set = hm.keySet();for (Integer key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}// 下面这种方式仅仅是集合的元素的字符串表示System.out.println("hm:" + hm);}
}
/*
3---hello
6---hello
7---hello
27---林青霞
28---刘意
29---林青霞
30---风清扬
hm:{3=hello, 6=hello, 7=hello, 27=林青霞, 28=刘意, 29=林青霞, 30=风清扬}
进程已结束,退出代码0
*/
package Map;
import java.util.HashMap;
import java.util.Set;/** HashMap* 键:String 学号* 值:Student 学生对象*/
public class HashMapDemo2 {public static void main(String[] args) {// 创建集合对象HashMap hm = new HashMap();// 创建学生对象Student s1 = new Student("周星驰", 58);Student s2 = new Student("刘德华", 55);Student s3 = new Student("梁朝伟", 54);Student s4 = new Student("刘嘉玲", 50);// 添加元素hm.put("9527", s1);hm.put("9522", s2);hm.put("9524", s3);hm.put("9529", s4);// 遍历Set set = hm.keySet();for (String key : set) {// 注意了:这次值不是字符串了// String value = hm.get(key);Student value = hm.get(key);System.out.println(key + "---" + value.getName() + "---"+ value.getAge());}}
}
/*
9524---梁朝伟---54
9522---刘德华---55
9529---刘嘉玲---50
9527---周星驰---58
进程已结束,退出代码0*/
/** HashMap* 键:Student* 要求:如果两个对象的成员变量值都相同,则为同一个对象。* 值:String*/
package Map;
import java.util.HashMap;
import java.util.Set;
public class HashMapDemo3 {public static void main(String[] args) {// 创建集合对象HashMap hm = new HashMap();// 创建学生对象Student s1 = new Student("貂蝉", 27);Student s2 = new Student("王昭君", 30);Student s3 = new Student("西施", 33);Student s4 = new Student("杨玉环", 35);Student s5 = new Student("貂蝉", 27);// 添加元素hm.put(s1, "8888");hm.put(s2, "6666");hm.put(s3, "5555");hm.put(s4, "7777");hm.put(s5, "9999");// 遍历Set set = hm.keySet();for (Student key : set) {String value = hm.get(key);System.out.println(key.getName() + "---" + key.getAge() + "---"+ value);}}
}
/*
王昭君---30---6666
貂蝉---27---9999
杨玉环---35---7777
西施---33---5555*/
/** LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。* 由哈希表保证键的唯一性* 由链表保证键盘的有序(存储和取出的顺序一致)*/
package Map;
import java.util.LinkedHashMap;
import java.util.Set;
/** LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。* 由哈希表保证键的唯一性* 由链表保证键盘的有序(存储和取出的顺序一致)*/
public class LinkedHashMapDemo {public static void main(String[] args) {// 创建集合对象LinkedHashMap hm = new LinkedHashMap();// 创建并添加元素hm.put("2345", "hello");hm.put("1234", "world");hm.put("3456", "java");hm.put("1234", "javaee");hm.put("3456", "android");// 遍历Set set = hm.keySet();for (String key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}}
}
/*
2345---hello
1234---javaee
3456---android
进程已结束,退出代码0*/
package Map;
import java.util.Set;
import java.util.TreeMap;
/** TreeMap:是基于红黑树的Map接口的实现。** HashMap* 键:String* 值:String*/
public class TreeMapDemo {public static void main(String[] args) {// 创建集合对象TreeMap tm = new TreeMap();// 创建元素并添加元素tm.put("hello", "你好");tm.put("world", "世界");tm.put("java", "爪哇");tm.put("world", "世界2");tm.put("javaee", "爪哇EE");// 遍历集合Set set = tm.keySet();for (String key : set) {String value = tm.get(key);System.out.println(key + "---" + value);}}
}
/*
hello---你好
java---爪哇
javaee---爪哇EE
world---世界2
进程已结束,退出代码0*/
package Map;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeMap;/** TreeMap* 键:Student* 值:String*/
public class TreeMapDemo2 {public static void main(String[] args) {// 创建集合对象TreeMap tm = new TreeMap(new Comparator() {@Overridepublic int compare(Student s1, Student s2) {// 主要条件int num = s1.getAge() - s2.getAge();// 次要条件int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;return num2;}});// 创建学生对象Student s1 = new Student("潘安", 30);Student s2 = new Student("柳下惠", 35);Student s3 = new Student("唐伯虎", 33);Student s4 = new Student("燕青", 32);Student s5 = new Student("唐伯虎", 33);// 存储元素tm.put(s1, "宋朝");tm.put(s2, "元朝");tm.put(s3, "明朝");tm.put(s4, "清朝");tm.put(s5, "汉朝");// 遍历Set set = tm.keySet();for (Student key : set) {String value = tm.get(key);System.out.println(key.getName() + "---" + key.getAge() + "---"+ value);}}
}
/*
潘安---30---宋朝
燕青---32---清朝
唐伯虎---33---汉朝
柳下惠---35---元朝
进程已结束,退出代码0*/
package Map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;/*ArrayList集合嵌套HashMap集合并遍历。需求:假设ArrayList集合的元素是HashMap。有3个。每一个HashMap集合的键和值都是字符串。元素我已经完成,请遍历。结果:周瑜---小乔吕布---貂蝉郭靖---黄蓉杨过---小龙女令狐冲---任盈盈林平之---岳灵珊*/
public class ArrayListIncludeHashMapDemo {public static void main(String[] args) {// 创建集合对象ArrayList> array = new ArrayList>();// 创建元素1HashMap hm1 = new HashMap();hm1.put("周瑜", "小乔");hm1.put("吕布", "貂蝉");// 把元素添加到array里面array.add(hm1);// 创建元素1HashMap hm2 = new HashMap();hm2.put("郭靖", "黄蓉");hm2.put("杨过", "小龙女");// 把元素添加到array里面array.add(hm2);// 创建元素1HashMap hm3 = new HashMap();hm3.put("令狐冲", "任盈盈");hm3.put("林平之", "岳灵珊");// 把元素添加到array里面array.add(hm3);// 遍历for (HashMap hm : array) {Set set = hm.keySet();for (String key : set) {String value = hm.get(key);System.out.println(key + "---" + value);}}}
}
/*
吕布---貂蝉
周瑜---小乔
杨过---小龙女
郭靖---黄蓉
令狐冲---任盈盈
林平之---岳灵珊
进程已结束,退出代码0*/
package Map;
import java.util.HashMap;
import java.util.Set;/** HashMap嵌套HashMap** 传智播客* jc 基础班* 陈玉楼 20* 高跃 22* jy 就业班* 李杰 21* 曹石磊 23** 先存储元素,然后遍历元素*/
public class HashMapDemo4 {public static void main(String[] args) {// 创建集合对象HashMap> czbkMap = new HashMap>();// 创建基础班集合对象HashMap jcMap = new HashMap();// 添加元素jcMap.put("陈玉楼", 20);jcMap.put("高跃", 22);// 把基础班添加到大集合czbkMap.put("jc", jcMap);// 创建就业班集合对象HashMap jyMap = new HashMap();// 添加元素jyMap.put("李杰", 21);jyMap.put("曹石磊", 23);// 把基础班添加到大集合czbkMap.put("jy", jyMap);//遍历集合Set czbkMapSet = czbkMap.keySet();for(String czbkMapKey : czbkMapSet){System.out.println(czbkMapKey);HashMap czbkMapValue = czbkMap.get(czbkMapKey);Set czbkMapValueSet = czbkMapValue.keySet();for(String czbkMapValueKey : czbkMapValueSet){Integer czbkMapValueValue = czbkMapValue.get(czbkMapValueKey);System.out.println("\t"+czbkMapValueKey+"---"+czbkMapValueValue);}}}
}
/*
jc高跃---22陈玉楼---20
jy曹石磊---23李杰---21进程已结束,退出代码0*/
package Map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;/**需求:*假设HashMap集合的元素是ArrayList。有3个。*每一个ArrayList集合的值是字符串。*元素我已经完成,请遍历。*结果:* 三国演义* 吕布* 周瑜* 笑傲江湖* 令狐冲* 林平之* 神雕侠侣* 郭靖* 杨过*/
public class HashMapIncludeArrayListDemo {public static void main(String[] args) {// 创建集合对象HashMap> hm = new HashMap>();// 创建元素集合1ArrayList array1 = new ArrayList();array1.add("吕布");array1.add("周瑜");hm.put("三国演义", array1);// 创建元素集合2ArrayList array2 = new ArrayList();array2.add("令狐冲");array2.add("林平之");hm.put("笑傲江湖", array2);// 创建元素集合3ArrayList array3 = new ArrayList();array3.add("郭靖");array3.add("杨过");hm.put("神雕侠侣", array3);//遍历集合Set set = hm.keySet();for(String key : set){System.out.println(key);ArrayList value = hm.get(key);for(String s : value){System.out.println("\t"+s);}}}
}
/*
神雕侠侣郭靖杨过
三国演义吕布周瑜
笑傲江湖令狐冲林平之进程已结束,退出代码0*/
/** 需求 :"aababcabcdabcde",获取字符串中每一个字母出现的次数要求结果:a(5)b(4)c(3)d(2)e(1)** 分析:* A:定义一个字符串(可以改进为键盘录入)* B:定义一个TreeMap集合* 键:Character* 值:Integer* C:把字符串转换为字符数组* D:遍历字符数组,得到每一个字符* E:拿刚才得到的字符作为键到集合中去找值,看返回值* 是null:说明该键不存在,就把该字符作为键,1作为值存储* 不是null:说明该键存在,就把值加1,然后重写存储该键和值* F:定义字符串缓冲区变量* G:遍历集合,得到键和值,进行按照要求拼接* H:把字符串缓冲区转换为字符串输出** 录入:linqingxia* 结果:result:a(1)g(1)i(3)l(1)n(2)q(1)x(1)*/
package Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class TreeMapDemo3 {public static void main(String[] args) {// 定义一个字符串(可以改进为键盘录入)Scanner sc = new Scanner(System.in);System.out.println("请输入一个字符串:");String line = sc.nextLine();// 定义一个TreeMap集合TreeMap tm = new TreeMap();//把字符串转换为字符数组char[] chs = line.toCharArray();//遍历字符数组,得到每一个字符for(char ch : chs){//拿刚才得到的字符作为键到集合中去找值,看返回值Integer i = tm.get(ch);//是null:说明该键不存在,就把该字符作为键,1作为值存储if(i == null){tm.put(ch, 1);}else {//不是null:说明该键存在,就把值加1,然后重写存储该键和值i++;tm.put(ch,i);}}//定义字符串缓冲区变量StringBuilder sb= new StringBuilder();//遍历集合,得到键和值,进行按照要求拼接Set set = tm.keySet();for(Character key : set){Integer value = tm.get(key);sb.append(key).append("(").append(value).append(")");}//把字符串缓冲区转换为字符串输出String result = sb.toString();System.out.println("result:"+result);}
}
package Map;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Set;/** 为了更符合要求:* 这次的数据就看成是学生对象。** 传智播客* bj 北京校区* jc 基础班* 林青霞 27* 风清扬 30* jy 就业班* 赵雅芝 28* 武鑫 29* sh 上海校区* jc 基础班* 郭美美 20* 犀利哥 22* jy 就业班* 罗玉凤 21* 马征 23* gz 广州校区* jc 基础班* 王力宏 30* 李静磊 32* jy 就业班* 郎朗 31* 柳岩 33* xa 西安校区* jc 基础班* 范冰冰 27* 刘意 30* jy 就业班* 李冰冰 28* 张志豪 29*/
public class HashMapDemo5 {public static void main(String[] args) {// 创建大集合HashMap>> czbkMap = new HashMap>>();// 北京校区数据HashMap> bjCzbkMap = new HashMap>();ArrayList array1 = new ArrayList();Student s1 = new Student("林青霞", 27);Student s2 = new Student("风清扬", 30);array1.add(s1);array1.add(s2);ArrayList array2 = new ArrayList();Student s3 = new Student("赵雅芝", 28);Student s4 = new Student("武鑫", 29);array2.add(s3);array2.add(s4);bjCzbkMap.put("基础班", array1);bjCzbkMap.put("就业班", array2);czbkMap.put("北京校区", bjCzbkMap);// 晚上可以自己练习一下// 上海校区数据自己做// 广州校区数据自己做// 西安校区数据HashMap> xaCzbkMap = new HashMap>();ArrayList array3 = new ArrayList();Student s5 = new Student("范冰冰", 27);Student s6 = new Student("刘意", 30);array3.add(s5);array3.add(s6);ArrayList array4 = new ArrayList();Student s7 = new Student("李冰冰", 28);Student s8 = new Student("张志豪", 29);array4.add(s7);array4.add(s8);xaCzbkMap.put("基础班", array3);xaCzbkMap.put("就业班", array4);czbkMap.put("西安校区", xaCzbkMap);// 遍历集合Set czbkMapSet = czbkMap.keySet();for (String czbkMapKey : czbkMapSet) {System.out.println(czbkMapKey);HashMap> czbkMapValue = czbkMap.get(czbkMapKey);Set czbkMapValueSet = czbkMapValue.keySet();for (String czbkMapValueKey : czbkMapValueSet) {System.out.println("\t" + czbkMapValueKey);ArrayList czbkMapValueValue = czbkMapValue.get(czbkMapValueKey);for (Student s : czbkMapValueValue) {System.out.println("\t\t" + s.getName() + "---"+ s.getAge());}}}}
}
/*
西安校区就业班李冰冰---28张志豪---29基础班范冰冰---27刘意---30
北京校区就业班赵雅芝---28武鑫---29基础班林青霞---27风清扬---30进程已结束,退出代码0*/
package Map;
import java.util.Hashtable;
/** 1:Hashtable和HashMap的区别?* Hashtable:线程安全,效率低。不允许null键和null值* HashMap:线程不安全,效率高。允许null键和null值** 2:List,Set,Map等接口是否都继承子Map接口?* List,Set不是继承自Map接口,它们继承自Collection接口* Map接口本身就是一个顶层接口*/
public class HashtableDemo {public static void main(String[] args) {// HashMap hm = new HashMap();Hashtable hm = new Hashtable();hm.put("it001", "hello");// hm.put(null, "world"); //NullPointerException// hm.put("java", null); // NullPointerExceptionSystem.out.println(hm);}
}
/*
{it001=hello}
进程已结束,退出代码0*/
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!