hashmap java 查找_【补充版】HashMap(根据value筛选查找)

本文介绍如何在Java中使用HashMap通过Value进行查找和筛选。通过创建ArrayList并使用if...else语句判断,根据Student类的classCord属性筛选出相同班级的学生,并展示不同班级的学员信息。
摘要由CSDN通过智能技术生成

HashMap查找之根据Value查找

一般大家都知道对于HashMap而言都是通过key来进行查找。找到了key自然对应的value也就一并找到了。但是有些情况下就需要通过value来进行判断查找。说是查找不如说筛选更为恰当。

那么什么情况下会用到这种vaule查找方式呢?让我们一起来看一下以下代码就清楚了。

【1】面向对象学生类的创建

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 packagecom.java.demo_9;2

3 /**

4 * Student类5 *@authorliupeng6 *7 */

8 public classStudent {9

10 privateString stuName;11 privateString classCord;12 privateString stuNumber;13 publicString getStuName() {14 returnstuName;15 }16 public voidsetStuName(String stuName) {17 this.stuName =stuName;18 }19 publicString getClassCord() {20 returnclassCord;21 }22 public voidsetClassCord(String classCord) {23 this.classCord =classCord;24 }25 publicString getStuNumber() {26 returnstuNumber;27 }28 public voidsetStuNumber(String stuNumber) {29 this.stuNumber =stuNumber;30 }31 publicStudent() {32 super();33 //TODO Auto-generated constructor stub

34 }35 publicStudent(String stuName,String stuNumber,String classCord) {36 super();37 this.stuName =stuName;38 this.classCord =classCord;39 this.stuNumber =stuNumber;40 }41 @Override42 publicString toString() {43 return "学员名称:" + stuName + ", 学员编号:"

44 + stuNumber + ", 班级番号:" +classCord;45 }46

47

48

49 }

Student(学生类)

【2】面向对象筛选出相同classCord的同学

package com.java.demo_9;

import java.util.ArrayList;

import java.util.HashMap;

public class HashMapTest2 {

public static void main(String[] args) {

HashMap map = new HashMap();   //HashMap字典的创建并遍历出各个元素

System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

System.out.println("\t\t\t\t");

System.out.println();

Student st1 = new Student("王小天", "cn0001", "class0001");

Student st2 = new Student("张天爱", "cn0002", "class0002");

Student st3 = new Student("武则天", "cn0003", "class0003");

Student st4 = new Student("小钢炮", "cn0004", "class0004");

Student st5 = new Student("屠龙刀", "cn0005", "class0002");

Student st6 = new Student("小龙女", "cn0008", "class0002");

Student st7 = new Student("三毛", "cn0006", "class0001");

Student st8 = new Student("杨过", "cn0007", "class0002");

map.put("王小天", st1);

map.put("张天爱", st2);

map.put("武则天", st3);

map.put("小钢炮", st4);

map.put("屠龙刀", st5);

map.put("小龙女", st6);

map.put("三毛", st7);

map.put("杨过", st8);

for (Object key : map.keySet()) {

// System.out.println(key);

Student value = (Student) map.get(key);

System.out.println(key + ":" + value);

}

System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

System.out.println();

//创建3个ArrayList列表便于接受数据

ArrayList list1 = new ArrayList();

ArrayList list2 = new ArrayList();

ArrayList list3 = new ArrayList();

//通过for循环,if else循环语句来筛选隶属于相同班级的学生(list3例外)

for(Object key:map.keySet()){

Student obj = (Student)map.get(key);

System.out.println(obj);

if(obj.getClassCord().contains("class0002")){

list1.add(obj);

}else if(obj.getClassCord().indexOf("class0001")!=-1){

list2.add(obj);

}else{

list3.add(obj);

}

}

//分别遍历出筛选过后的结果

System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

System.out.println("[class0002班级的学生有:]");

System.out.println();

for(Object obj:list1)

System.out.println(obj);

System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

System.out.println("[class0001班级的学生有:]");

System.out.println();

for(Object obj:list2)

System.out.println(obj);

System.out.println("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

System.out.println("[其他班级的学生有:]");

System.out.println();

for(Object obj:list3)

System.out.println(obj);

}

}

结果:

【HashMap原字典信息】

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

三毛:学员名称:三毛, 学员编号:cn0006, 班级番号:class0001

屠龙刀:学员名称:屠龙刀, 学员编号:cn0005, 班级番号:class0002

张天爱:学员名称:张天爱, 学员编号:cn0002, 班级番号:class0002

小龙女:学员名称:小龙女, 学员编号:cn0008, 班级番号:class0002

杨过:学员名称:杨过, 学员编号:cn0007, 班级番号:class0002

小钢炮:学员名称:小钢炮, 学员编号:cn0004, 班级番号:class0004

王小天:学员名称:王小天, 学员编号:cn0001, 班级番号:class0001

武则天:学员名称:武则天, 学员编号:cn0003, 班级番号:class0003

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

【属于class0002班级学员的信息】

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[class0002班级的学生有:]

学员名称:屠龙刀, 学员编号:cn0005, 班级番号:class0002

学员名称:张天爱, 学员编号:cn0002, 班级番号:class0002

学员名称:小龙女, 学员编号:cn0008, 班级番号:class0002

学员名称:杨过, 学员编号:cn0007, 班级番号:class0002

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

【属于class0001班级学员的信息】

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[class0001班级的学生有:]

学员名称:三毛, 学员编号:cn0006, 班级番号:class0001

学员名称:王小天, 学员编号:cn0001, 班级番号:class0001

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

【其他班级学员的信息】

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[其他班级的学生有:]

学员名称:小钢炮, 学员编号:cn0004, 班级番号:class0004

学员名称:武则天, 学员编号:cn0003, 班级番号:class0003

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++

总结:

1. 创建3个ArrayList列表分别用来存放不同班级的信息.

2. 通过if ,else if ,else语句来判断属于不同班级的学生(根据classCord来判断)

3. 通过面向对象的方法调用Student类中.getClassCord()获取到classCord.

4. 通过.contains("元素"),.indexOf("元素")!=-1的任意一种方式结合if,else语句来进行筛选判断.

5. 分别遍历3个ArrayList中存入的元素.

方法很简单,相信java大神们肯定有更便捷的方法同样能够做到更好的效果。但是我是java初学者,这篇文章在此的目的只是希望能够帮助跟我一样初学java的同学们。

希望能有所帮助,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值