建设银行企业网站进不去,长沙网上商城,广东米可信息技术有限公司,吸引流量的网站一、HashMap介绍 HashMap是Map接口的一个实现类#xff08;HashMap实现了Map的接口#xff09;#xff0c;它具有Map的特点。HashMap的底层是哈希表结构。 Map是用于保存具有映射关系的数据集合#xff0c;它具有双列存储的特点#xff0c;即一次必须添加两个元素#xf…一、HashMap介绍 HashMap是Map接口的一个实现类HashMap实现了Map的接口它具有Map的特点。HashMap的底层是哈希表结构。 Map是用于保存具有映射关系的数据集合它具有双列存储的特点即一次必须添加两个元素即一组键值对Key,Value其中Key的值不可重复当Key的值重复的时候后面插入的对象会将之前插入的具有相同的Key值的对象覆盖掉Value的值可重复。 其中Key,Value键值对在Java语言中又被称之为Entry/entryMap.Entry就相当于Student.name若name的数据类型为String则Student.name的数据类型为String同理若key,value中key的数据类型为Integervalue的数据类型为String则Map.Entry的数据类型为Integer,String。在HashMap与TreeMap中均可使用Map.Entry。 接下来我们将结合代码来具体学习HashMap相关知识。
二、HashMap的基本操作代码 HashMap入门
Key数据类型为Integer类型Value数据类型为String类型的HashMap
public static void main(String[] args) {//若要使用HashMap我们需要导入import java.util.HashMap;//我们使用泛型来约束HashMap的数据类型,Key为Integer数据类型,Value为String数据类型HashMapInteger, String hashMap new HashMap();//使用put()方法来添加数据hashMap.put(100, 北京);hashMap.put(99, 上海);hashMap.put(98, 广州);//普通打印输出System.out.println(hashMap);}运行结果 接下来我们探讨Key的值不可重复当Key的值重复的时候后面插入的对象会将之前插入的具有相同的Key值的对象覆盖掉Value的值可重复此问题
Key数据类型为Integer类型Value数据类型为String类型的Map
其中第一对象和第五对象的Value值相同第三对象与第四对象的Key值相同。
public static void main(String[] args) {//若要使用HashMap我们需要导入import java.util.HashMap;//我们使用泛型来约束HashMap的数据类型,Key为Integer数据类型,Value为String数据类型HashMapInteger, String hashMap new HashMap();//使用put()方法来添加数据hashMap.put(97, 北京);//第一对象hashMap.put(98, 上海);//第二对象hashMap.put(99, 广州);//第三对象hashMap.put(99, 深圳);//第四对象hashMap.put(100, 北京);//第五对象//打印输出System.out.println(hashMap);}运行结果我们发现后面插入的第四对象将之前插入的第三对象给覆盖掉了而第一对象与第五对象的Value值重复则不会带来任何影响 三、HashMap的遍历操作 HashMap基础 HashMap的遍历分为调用keySet()方法遍历和entrySet()方法遍历 HashMap调用keySet()方法遍历
public static void main(String[] args) {//若要使用HashMap我们需要导入import java.util.HashMap;//我们使用泛型来约束HashMap的数据类型,Key为Integer数据类型,Value为String数据类型HashMapInteger, String hashMap new HashMap();//使用put()方法来添加数据hashMap.put(97, 北京);//第一对象hashMap.put(98, 上海);//第二对象hashMap.put(99, 广州);//第三对象hashMap.put(99, 深圳);//第四对象hashMap.put(100, 北京);//第五对象//调用keySet方法遍历//在HashMap遍历中Key占据着主导地位可以通过Key值找到对应的Value值//调用keySet()方法Set泛型约束应与Key的数据类型一致//例如在本代码中HashMapInteger, StringKey的数据类型为Integer因此Set泛型约束也应当为Integer//SetInteger set11hashMap.keySet();代码的意思为将HashMap中所有Key值存入Set集合979899100)//那么set11即为Key值集合SetInteger set11hashMap.keySet();//使用forEach()语句遍历Integer为set11的数据类型i为set11的复用名相当于set11//那么i就成为了Key值for(Integer i:set11){//在HashMap遍历中Key占据着主导地位可以通过Key值找到对应的Value值//接下来我们要根据Key值来查找各个Key值对应的Value值//Value数据类型为String,设置一个String变量str来存储Value//hashMap.get(i);代码意思为根据iKey值找到相对应的Value值String strhashMap.get(i);//打印输出System.out.println(Key的值为i Value的值为str);}}运行结果 HashMap调用entrySet()方法遍历
public static void main(String[] args) {//若要使用HashMap我们需要导入import java.util.HashMap;//我们使用泛型来约束HashMap的数据类型,Key为Integer数据类型,Value为String数据类型HashMapInteger, String hashMap new HashMap();//使用put()方法来添加数据hashMap.put(97, 北京);//第一对象hashMap.put(98, 上海);//第二对象hashMap.put(99, 广州);//第三对象hashMap.put(99, 深圳);//第四对象hashMap.put(100, 北京);//第五对象//调用entrySet方法遍历//调用entrySet()方法Set泛型约束应与HashMap.Entry的数据类型一致即Integer, String//Key,Value键值对在Java语言中又被称之为Entry/entryHashMap.Entry就相当于Student.name若name的数据类型为String则Student.name的数据类型为String同理若key,value中key的数据类型为Integervalue的数据类型为String则HashMap.Entry的数据类型为Integer,String在这里就是Integer, String。//SetHashMap.EntryInteger,String set11hashMap.entrySet();代码的意思为将HashMap中所有(Key,Value)值存入Set集合[(97,北京),(98,“上海”),(99,“深圳”),(100,“北京”)]//那么set11即为(Key,Value)值集合//同理我们也可写为SetMap.EntryInteger, String set11 hashMap.entrySet();SetHashMap.EntryInteger, String set11 hashMap.entrySet();//使用forEach()语句遍历Integer为set11的数据类型i为set11的复用名相当于set11//那么i就成为了(Key,Value)值for (HashMap.EntryInteger, String i : set11) {//打印输出,直接调用getKey()方法得到Key值,直接调用getValue()得到Value值System.out.println(Key的值为 i.getKey() Value的值为 i.getValue());}}运行结果
—
四、案例HashMap集合储存学生对象并遍历 HashMap基础强化 需求创建一个Map集合Key键是学生对象StudentValue值是籍贯String。 要求存储三个键值对元素Entry并遍历 Student类
public class Student {private String name;private int age;public Student() {}public Student(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}public void setAge(int age) {this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };}
}HashMap遍历输出
public static void main(String[] args) {//若要使用HashMap我们需要导入import java.util.HashMap;//我们使用泛型来约束HashMap的数据类型,Key为Student数据类型,Value为String数据类型HashMapStudent, String hashMapnew HashMap();//创建Student对象元素Student student1new Student(zhangsan,18);Student student2new Student(lisi,29);Student student3new Student(wangwu,33);//使用put()方法来添加数据hashMap.put(student1,北京);hashMap.put(student2,上海);hashMap.put(student3,广州);//调用keySet方法遍历//在HashMap遍历中Key占据着主导地位可以通过Key值找到对应的Value值//调用keySet()方法Set泛型约束应与Key的数据类型一致//例如在本代码中HashMapStudent, StringKey的数据类型为Student因此Set泛型约束也应当为Student//SetStudent set11hashMap.keySet();代码的意思为将HashMap中所有Key值存入Set集合student1student2student3//那么set11即为Key值集合SetStudent set11hashMap.keySet();//使用forEach()语句遍历Student为set11的数据类型i为set11的复用名相当于set11//那么i就成为了Key值for(Student i:set11){//在HashMap遍历中Key占据着主导地位可以通过Key值找到对应的Value值//接下来我们要根据Key值来查找各个Key值对应的Value值//Value数据类型为String设置一个String变量来存储Value//hashMap.get(i);代码意思为根据iKey值找到相对应的Value值String strhashMap.get(i);//打印输出System.out.println(Key的值为i Value的值为str);}System.out.println(华丽的分割线);//调用entrySet方法遍历//调用entrySet()方法Set泛型约束应与HashMap.Entry的数据类型一致即Student, String//Key,Value键值对在Java语言中又被称之为Entry/entryHashMap.Entry就相当于Student.name若name的数据类型为String则Student.name的数据类型为String同理若key,value中key的数据类型为Integervalue的数据类型为String则HashMap.Entry的数据类型为Integer,String在这里就是Student, String。//SetHashMap.EntryStudent, String set22hashMap.entrySet();代码的意思为将Map中所有(Key,Value)值存入Set集合[(Student(zhangsan,18),北京),(Student(lisi,29),“上海”),(Student(wangwu,33),“广州”)]//那么set22即为(Key,Value)值集合//同理我们也可写为SetMap.EntryInteger, String set22 hashMap.entrySet();SetHashMap.EntryStudent, String set22hashMap.entrySet();//使用forEach()语句遍历Integer为set22的数据类型i为set22的复用名相当于set22//那么i就成为了(Key,Value)值for(HashMap.EntryStudent, String i:set22){//打印输出,直接调用getKey()方法得到Key值,直接调用getValue()得到Value值System.out.println(Key的值为i.getKey() Value的值为i.getValue());}}运行结果我们发现输出顺序与插入顺序不一致这是因为我们使用了Set集合来遍历MapSet集合具有存取数据不一致的问题 OK结束