1. 程式人生 > >判斷 Map 中是否包含指定的 key 和 value

判斷 Map 中是否包含指定的 key 和 value

重寫name的hashcode()和equals()方法

package com.imooc.collection;

import java.util.HashSet;
import java.util.Set;
/**
 * 學生類
 * @author Monica
 *
 */

public class Student {
    public String id;
    public String name;
    public Set<Course> courses;
    public Student(String id,String name){
        this
.id = id; this.name = name; this.courses = new HashSet<Course>();//set介面呼叫 } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((name == null) ? 0 : name.hashCode()); return result; } @Override
public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof Student)) return false; Student other = (Student) obj; if (name == null) { if (other.name != null
) return false; } else if (!name.equals(other.name)) return false; return true; } }
package com.imooc.collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;
import java.util.Set;

public class MapTest {
    /**
     * 用來承裝學生型別物件
     * @param args
     */
    public Map<String,Student> students;

    /**
     * 在構造方法中初試化students屬性
     * @param args
     */
    public MapTest(){
        this.students = new HashMap<String,Student>();
    }
    /**
     * 測試新增:輸入學生ID,判斷是否被佔用
     * 若未被佔用,則輸入姓名,建立新學生物件,並且新增到students中
     * @param args
     */
    public void testPut(){
        //建立一個Scanner物件,用來獲取輸入的學生ID和姓名
        Scanner console = new Scanner(System.in);
        int i = 0;
        while (i<3){
            System.out.println("請輸入學生ID:");
            String ID = console.next();
            //判斷該ID是否被佔用
            Student st = students.get(ID);
            if(st==null){
                System.out.println("請輸入學生姓名:");
                String name = console.next();
                //建立新的學生物件
                Student newStudent = new Student(ID,name);
                //通過呼叫students的put方法,新增ID-學生對映
                students.put(ID, newStudent);
                System.out.println("成功新增學生:"+students.get(ID).name);
                i++;
            }else{
                System.out.println("該學生ID已被佔用!");
                continue;
            }
        }
    }
    /**
     * 測試Map中是否包含某個Key值或value值
     */
    public void testContainsKeyOrValue(){
        //提示輸入學生id
        System.out.println("請輸入要查詢的學生ID:");
        Scanner console = new Scanner(System.in);
        String id = console.next();
        //在Map中,用containsKey()方法,來判斷是否包含某個Key值
        System.out.println("您輸入的學生ID為:"+id+",在學生對映表中是否存在:"+students.containsKey(id));
        if(students.containsKey(id))
            System.out.println("對應的學生為:"+students.get(id).name);
        //提示輸入學生姓名
        System.out.println("請輸入要查詢的學生姓名:");
        String name = console.next();
        //在containsValue()方法,來判斷是否包含某個Value值
        if(students.containsValue(new Student(null,name)))
            System.out.println("在學生對映表中,確實包含學生:"+name);
        else
            System.out.println("在學生對映表中不存在該學生!");

    }
    /**
     * 測試Map的keySet方法
     * @param args
     */
    public void testKeySet(){
        //通過keySet方法,返回Map中的所有“鍵”的Set集合
        Set<String> keySet = students.keySet();
        //取得Map的容量,呼叫set方法
        System.out.println("總共有"+keySet.size()+"個學生");
        //通過遍歷KeySet物件,取得每一個鍵,在呼叫get方法取得每個鍵對應的value
        for(String stuId:keySet){
            Student st = students.get(stuId);
            if(st!=null)
                System.out.println("學生:"+st.name);
        }
    }
    /**
     * 測試刪除Map中的對映
     * @param args
     */
    public void testRemove(){

        //獲取從鍵盤輸入的待刪除學生Id字串
        Scanner console = new Scanner(System.in);
        while(true){
            //提示輸入待刪除的學生的ID 
            System.out.println("請輸入要刪除的學生ID!");
            String ID = console.next();
            //判斷該ID是否有對應的學生物件
            Student st = students.get(ID);
            if(st==null){
                //提示輸入的ID並不存在
                System.out.println("該ID不存在!");
                continue;
            }else{
                students.remove(ID);
                System.out.println("成功刪除學生:"+st.name);
                break;
            }
        }
    }
    /**
     * 通過entrySet方法來遍歷Map
     * @param args
     */
    public void testEntrySet(){
        //通過entrySet方法,返回Map中的所有鍵值對
        Set<Entry<String,Student>> entrySet = students.entrySet();
        for(Entry<String,Student> entry:entrySet){
            System.out.println("取得鍵:"+entry.getKey());
            System.out.println("對應的值為:"+entry.getValue().name);
        }
    }
    /**
     * 利用put方法修改Map中已有對映
     * @param args
     */
    public void testModify(){
        //提示輸入要修改的學生Id
        System.out.println("請輸入要修改的學生ID:");
        //建立一個Scanner物件,去獲取從鍵盤輸入的學生ID字串
        Scanner console = new Scanner(System.in);
        while(true){
            //取得從鍵盤輸入的學生ID
            String stuID = console.next();
            //從students中查詢該學生ID對應的學生物件
            Student student = students.get(stuID);
            if(student == null){
                System.out.println("該ID不存在!請重新輸入!");
                continue;
            }
            //提示當前對應的學生物件的姓名
            System.out.println("當前該學生ID,所對應的學生為:"+student.name);
            //提示輸入新的學生姓名,來修改已有的對映
            System.out.println("請輸入新的學生姓名:");
            String name = console.next();
            Student newStudent = new Student(stuID,name);
            students.put(stuID, newStudent);
            System.out.println("修改成功!");
            break;
        }
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        MapTest mt = new MapTest();
        mt.testPut();
        mt.testKeySet();
        //mt.testRemove();
        //mt.testEntrySet();
        //mt.testModify();
        //mt.testEntrySet();
        mt.testContainsKeyOrValue();
    }

}

相關推薦

判斷 Map 是否包含指定key value

重寫name的hashcode()和equals()方法 package com.imooc.collection; import java.util.HashSet; import java.util.Set; /** * 學生類 * @author

PostgreSQL: 如何判斷字串是否包含指定字元。

今天有開發人員問到: PostgreSQL 中是否有函式可以判斷一個字串中是否包含指定字元,如果包 含則返回 ture ,否則返回 false,例如,如果字串 'abcde' 中包含 'ab' 則返回 true,於是想了想,共總 結以下三種方法,暫且不考慮效能。 一 方法一: 使用

【C#】判斷字串是否包含指定字串,contains與indexof方法效率問題

1 class Program 2 { 3 private const int N = 10000000; 4 private static Stopwatch watch = new Stopwatch(); 5 static v

判斷字串是否包含指定字元或特殊字元

Pattern p = Pattern.compile("[@#$%^&*]"); Matcher m = p.matcher(s); boolean match = m.find(); 如果

Map.containsKey方法——判斷Map集合物件是否包含指定的鍵名

containsKey方法用來判斷Map集合物件中是否包含指定的鍵名。 語法  boolean containsKey(Object key)  返回值:如果Map集合中包含指定的鍵名,則返回true;否則返回false。 引數:key是要查詢的Map集合的鍵名物件。

Map四種獲取keyvalue值的方法,以及對map的元素排序(轉)

compareto map.entry 排序 區別 sta hashmap 得到 package log 獲取map的值主要有四種方法,這四種方法又分為兩類,一類是調用map.keySet()方法來獲取key和value的值,另一類則是通過map.entrySet()方法來

mybatis insert的入參為map時,insert語句獲取keyvalue的寫法

1. <insert id="submitAudit"> insert into tablename <foreach collection="params.keys" item="key" open="(" close=")" separator=",">

shell-判斷指定檔案是否包含指定的字串

來自百度 grep "prod" /home/admin/gitrep/otp/otp-webapp-api/src/main/webapp/WEB-INF/web.xml > /dev/n

shell提取指定列並判斷提取結果是否包含指定字串

判斷第一列是否包含某一個關鍵字,如果與關鍵字相等,則輸出當前行的最後一列內容。 fileType=$( blkid | awk '{if($1=="關鍵字") {print $NF}}') 然後,在判斷filetype中是否包含指定的字串,     if echo $fil

c++mapkeyvalue排序

algo second ios ring out 升序 i++ con pre 1 ``` 2 #include<iostream> 3 #include<algorithm> 4 #include<vector> 5 #in

在JavaScript獲取Map集合keyvalue值(前提是:既不知道key為什麼值,也不知道value有哪些值)

在JavaScript中獲取Map集合中的key和value值(前提是:既不知道key為什麼值,也不知道value有哪些值) Map<String,List<Document>>

JavaMap獲取keyvalue

Java Map獲取key和value的方法    List<Map<String,Object>> list  =new ArrayList<Map<String,

如何取出Mapkeyvalue

import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * 遍歷: key value * @aut

Java Map按照KeyValue排序【轉】

try lin tor put array ava ble nbsp key package kingtool.sort; import java.util.ArrayList; import java.util.Collections; import java.ut

javaimport機制(指定importimport *的區別)

dem single boot 路徑 list http 簡單 至少 package 轉自:https://www.cnblogs.com/dtts/p/4692480.html java中有兩種包的導入機制,總結如下: 單類型導入(single-type-i

Redis INCRINCRBY對指定keyvalue進行數字相加

INCRBY key increment 將 key 所儲存的值加上增量 increment 。 如果 key 不存在,那麼 key 的值會先被初始化為 0 ,然後再執行 INCRBY 命令。 如果值包含錯誤的型別,或字串型別的值不能表示為數字,那麼返回一個錯誤。 本操作的值

php 字串是否包含指定字串的多種方法

編寫程式的時候,經常要處理字串,最基本就是字串的查詢,在php檢測字串中是否包含指定字串可以使用正則,如果你對正則不瞭解,那麼有幾個函式可以為您提供方便。 1. strstr strstr() 函式搜尋一個字串在另一個字串中的第一次出現。 該函式返回字串的其餘部分(從匹配點)。如果未找到所搜

hashMap keyvalue交換

import java.util.HashMap; import java.util.Hashtable; import java.util.Set; import java.util.Collection; class TestCollection{ public static void ma

ABAP 判斷字串是否包含非數字

data: lv_str type c. IF cl_abap_matcher=>matches(    pattern = '^(-?[1-9]\d*(\.\d*[1-9])?)|(-?0\.\d*[1-9])$'    text = lv

JS—使用indexOf()來判斷字串是否包含某個值

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js判斷陣列中是否包含一個數字</title> <scri