課程
/后端開發(fā)
/Java
/Java入門第三季
為什么containsKey的時候,沒修改不報錯呢?
2015-05-03
源自:Java入門第三季 6-4
正在回答
因為Map的鍵值對應(yīng)的值是唯一的,而值所映射的鍵值卻有可能是多個的,而Contains方法自帶的比較機制是比較索引,也就是地址,所以ContainsValue方法需要改寫
風中過客 提問者
個人理解,containsKey()方法中,調(diào)用的是String類型的equals()函數(shù),查閱javaAPI文檔可知,String類型已經(jīng)對equals()方法進行了重寫:“將此字符串與指定的對象比較。當且僅當該參數(shù)不為 null,并且是與此對象表示相同字符序列的 String 對象時,結(jié)果才為 true”。所以就不需要我們進行重寫了!
package com.imooc.collection;
import java.util.HashMap;
import java.util.Map;
/** * @author ?guokewind?
?* @date 創(chuàng)建時間:2015年5月4日 下午12:01:29?
?* @version?
?* @parameter ?
?* @since ?
?* @return ?*/
public class Test3 {
public Map<String, String> students;
/**
* 在構(gòu)造器中初始化students屬性
*/
public Test3() {
this.students = new HashMap<String, String>();
}
public void testPut() {
students.put("1", "xiaoming");
public void duibi(String id,String name){
System.out.println(students.containsKey(id));
System.out.println(students.containsValue(name));
public static void main(String[] args) {
// TODO Auto-generated method stub
? ? ? ? ? ?Test3 test=new Test3();
? ? ? ? ? ?test.testPut();
? ? ? ? ? Student st=new Student("1","xiaoming");
? ? ? ? ? ?test.duibi("1","2");
? ? ? ? ? ?test.duibi("1","xiaoming");
比較的是字符串吧?比較字符串的時候,是需要寫equals的
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
2 回答containsValue方法為啥要重寫equals方法?。繂为氈貙慼ashcode方法不行嗎?
4 回答為什么老師重寫的equals方法中name需要用equals()進行比較而不用==?
2 回答equals()方法為什么只比較屬性的值而不比較類的方法是否相同呢?
1 回答對視頻的疑問--Map 中的containsValue() 方法的參數(shù)是什么
2 回答為什么我的containsValue方法會有這種錯誤
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學習伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2015-05-21
因為Map的鍵值對應(yīng)的值是唯一的,而值所映射的鍵值卻有可能是多個的,而Contains方法自帶的比較機制是比較索引,也就是地址,所以ContainsValue方法需要改寫
2015-09-30
個人理解,containsKey()方法中,調(diào)用的是String類型的equals()函數(shù),查閱javaAPI文檔可知,String類型已經(jīng)對equals()方法進行了重寫:“將此字符串與指定的對象比較。當且僅當該參數(shù)不為 null,并且是與此對象表示相同字符序列的 String 對象時,結(jié)果才為 true”。所以就不需要我們進行重寫了!
2015-05-04
package com.imooc.collection;
import java.util.HashMap;
import java.util.Map;
/** * @author ?guokewind?
?* @date 創(chuàng)建時間:2015年5月4日 下午12:01:29?
?* @version?
?* @parameter ?
?* @since ?
?* @return ?*/
public class Test3 {
public Map<String, String> students;
/**
* 在構(gòu)造器中初始化students屬性
*/
public Test3() {
this.students = new HashMap<String, String>();
}
public void testPut() {
students.put("1", "xiaoming");
}
public void duibi(String id,String name){
System.out.println(students.containsKey(id));
System.out.println(students.containsValue(name));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
? ? ? ? ? ?Test3 test=new Test3();
? ? ? ? ? ?test.testPut();
? ? ? ? ? Student st=new Student("1","xiaoming");
? ? ? ? ? ?test.duibi("1","2");
? ? ? ? ? ?test.duibi("1","xiaoming");
}
}
2015-05-04
比較的是字符串吧?比較字符串的時候,是需要寫equals的