zoukankan      html  css  js  c++  java
  • 【补充版】HashMap(根据value筛选查找)

    HashMap查找之根据Value查找

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

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

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

     1 package com.java.demo_9;
     2 
     3 /**
     4  * Student类
     5  * @author liupeng
     6  *
     7  */
     8 public class Student {
     9     
    10     private String stuName;
    11     private String classCord;
    12     private String stuNumber;
    13     public String getStuName() {
    14         return stuName;
    15     }
    16     public void setStuName(String stuName) {
    17         this.stuName = stuName;
    18     }
    19     public String getClassCord() {
    20         return classCord;
    21     }
    22     public void setClassCord(String classCord) {
    23         this.classCord = classCord;
    24     }
    25     public String getStuNumber() {
    26         return stuNumber;
    27     }
    28     public void setStuNumber(String stuNumber) {
    29         this.stuNumber = stuNumber;
    30     }
    31     public Student() {
    32         super();
    33         // TODO Auto-generated constructor stub
    34     }
    35     public Student(String stuName,String stuNumber,String classCord) {
    36         super();
    37         this.stuName = stuName;
    38         this.classCord = classCord;
    39         this.stuNumber = stuNumber;
    40     }
    41     @Override
    42     public String 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(" <学员信息一览表> "); 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的同学们。

    希望能有所帮助,谢谢。

  • 相关阅读:
    MT7601 AP模式移植
    dhcp server 移植记录
    MT7601 WG209模块驱动移植,并连接路由器
    git 忽略文件
    关于中文--Unicode之间互相转换流程的说明
    将文字拆成拼音得到首字母(返回多音字)
    Javascript 汉字转首字母的拼音 js文件(支持多音字的选择)
    如何使用netstat –ano|findstr “port”命令?
    notepad++如何修改主题
    Notepad++ 更换主题
  • 原文地址:https://www.cnblogs.com/liupengpengg/p/6092746.html
Copyright © 2011-2022 走看看