最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

為了賬號安全,請及時綁定郵箱和手機立即綁定

在這節(jié)視頻中,為什么只有比較containsValue的時候才出錯,才需要修改hashcode和equals方法?

為什么containsKey的時候,沒修改不報錯呢?


正在回答

4 回答

因為Map的鍵值對應(yīng)的值是唯一的,而值所映射的鍵值卻有可能是多個的,而Contains方法自帶的比較機制是比較索引,也就是地址,所以ContainsValue方法需要改寫

3 回復 有任何疑惑可以回復我~
#1

風中過客 提問者

非常感謝!
2015-05-21 回復 有任何疑惑可以回復我~

個人理解,containsKey()方法中,調(diào)用的是String類型的equals()函數(shù),查閱javaAPI文檔可知,String類型已經(jīng)對equals()方法進行了重寫:“將此字符串與指定的對象比較。當且僅當該參數(shù)不為 null,并且是與此對象表示相同字符序列的 String 對象時,結(jié)果才為 true”。所以就不需要我們進行重寫了!

0 回復 有任何疑惑可以回復我~

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");

}


}


0 回復 有任何疑惑可以回復我~

比較的是字符串吧?比較字符串的時候,是需要寫equals的

0 回復 有任何疑惑可以回復我~
#1

風中過客 提問者

this.students = new HashMap<String, Student>(); key才是 String 類型,之后containsValue比較的是student中的name(String類型)
2015-05-04 回復 有任何疑惑可以回復我~
#2

風中過客 提問者

我試了一下 如果 是這樣的 his.students = new HashMap<String, String>(); 這樣的話 是能夠正確比較的。 會不會因為之前比較的Value,直接把course2放到containsValue()里面了? 因此導致無法正確比較
2015-05-04 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

在這節(jié)視頻中,為什么只有比較containsValue的時候才出錯,才需要修改hashcode和equals方法?

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號