博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java API —— HashMap类 & LinkedHashMap类
阅读量:7290 次
发布时间:2019-06-30

本文共 6300 字,大约阅读时间需要 21 分钟。

1、HashMap类
  1)HashMap类概述
        键是哈希表结构,可以保证键的唯一性
  2)HashMap案例
        HashMap<String,String>
        HashMap<Integer,String>
        HashMap<String,Student>
        HashMap<Student,String>
例子1:
package hashmapdemos;import java.util.HashMap;import java.util.Set;/** * Created by gao on 15-12-21. *//* * HashMap:是基于哈希表的Map接口实现。 * 哈希表的作用是用来保证键的唯一性的。 * * HashMap
* 键:String * 值:String */public class HashMapDemo01 { public static void main(String[] args) { // 创建集合对象 HashMap
hm = new HashMap
(); // 创建元素并添加元素 hm.put("it001", "马云"); hm.put("it003", "马化腾"); hm.put("it004", "乔布斯"); hm.put("it005", "张朝阳"); hm.put("it002", "裘伯君"); // wps hm.put("it001", "比尔盖茨"); // 遍历 Set
set = hm.keySet(); for (String key : set) { String value = hm.get(key); System.out.println(key + "---" + value); } }}

例子2:

package hashmapdemos;import java.util.HashMap;import java.util.Set;/** * Created by gao on 15-12-21. *//* * HashMap
* 键:Integer * 值:String */public class HashMapDemo02 { public static void main(String[] args) { // 创建集合对象 HashMap
hm = new HashMap
(); // 创建元素并添加元素 hm.put(27, "林青霞"); hm.put(30, "风清扬"); hm.put(28, "刘意"); hm.put(29, "林青霞"); // 下面的写法是八进制,因为以0开头,不能出现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); } }}
例子3:
学生类:
package hashmapdemos;/** * Created by gao on 15-12-21. */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;    }}

 测试类:

package hashmapdemos;import java.util.HashMap;import java.util.Set;/** * Created by gao on 15-12-21. *//* * HashMap
* 键:String 学号 * 值:Student 学生对象 */public class HashMapDemo03 { 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) { Student value = hm.get(key); System.out.println(key + "--" + value.getName() + "---" + value.getAge()); } }}
输出结果:
9524--梁朝伟---54
9522--刘德华---55
9527--周星驰---58
9529--刘嘉玲---50
例子4:
学生类:重写hashCode方法和equals方法
package hashmapdemos;/** * Created by gao on 15-12-21. */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;    }    @Override    public boolean equals(Object o) {        if (this == o) return true;        if (!(o instanceof Student)) return false;        Student student = (Student) o;        if (age != student.age) return false;        if (!name.equals(student.name)) return false;        return true;    }    @Override    public int hashCode() {        int result = name.hashCode();        result = 31 * result + age;        return result;    }}

 测试类:

package hashmapdemos;import java.util.HashMap;import java.util.Set;/** * Created by gao on 15-12-21. *//* * HashMap
* 键:Student * 要求:如果两个对象的成员变量值都相同,则为同一个对象。 * 值:String */public class HashMapDemo04 { 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); } }}
输出结果:
貂蝉---27---9999
西施---33---5555
杨玉环---35---7777
王昭君---30---6666
 
 
2、LinkedHashMap类
    Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
package linkedhashmapdemos;import java.util.LinkedHashMap;import java.util.Set;/** * Created by gao on 15-12-22. *//* * LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序。 * 由哈希表保证键的唯一性 * 由链表保证键盘的有序(存储和取出的顺序一致) */public class LinkedHashMapDemo {    public static void main(String[] args) {        // 创建集合对象        LinkedHashMap
lm = new LinkedHashMap
(); // 创建并添加元素 lm.put("2345", "hello"); lm.put("1234", "world"); lm.put("3456", "java"); lm.put("1234", "javaee"); lm.put("3456", "android"); // 遍历 Set
set = lm.keySet(); for (String key : set) { String value = lm.get(key); System.out.println(key + "---" + value); } }}
输出结果(唯一和有序):
2345---hello
1234---javaee   (注意这里的javaee把旧的值world覆盖)
3456---android (注意这里的andorid把旧的值java覆盖)
 

转载于:https://www.cnblogs.com/yangyquin/p/5066134.html

你可能感兴趣的文章
火狐浏览器设置placeholder的时候记得改opacity
查看>>
Mina学习
查看>>
java通过句柄访问对象
查看>>
extern "C"与C++中的C函数调用(4)—— 如何在C中调用C++函数
查看>>
计算几何 模板
查看>>
“The Psychology of Cross Country”笔记
查看>>
10 Web Apps for Developers 为开发者提供的10款Web应用程序
查看>>
python之正则表达式
查看>>
Shell命令-文件及目录操作之touch、tree
查看>>
修改K/3 Cloud管理中心端口
查看>>
C#语言课程11月7日
查看>>
linux日常1-踢出用户
查看>>
MFC多文档应用程序同时显示两个视图
查看>>
github快速入门(一)
查看>>
PHP全栈开发(八):CSS Ⅸ dispaly & visibility
查看>>
正则表达式
查看>>
【Oracle 12c】最新CUUG OCP-071考试题库(56题)
查看>>
C#使用Xamarin开发可移植移动应用进阶篇(6.使用渲染器针对单个平台自定义控件..很很很很重要..),附源码...
查看>>
实验二
查看>>
简单安装ubuntu
查看>>