課程
/后端開(kāi)發(fā)
/Java
/Java入門(mén)第三季
為什么containsKey的時(shí)候,沒(méi)修改不報(bào)錯(cuò)呢?
2015-05-03
源自:Java入門(mén)第三季 6-4
正在回答
因?yàn)镸ap的鍵值對(duì)應(yīng)的值是唯一的,而值所映射的鍵值卻有可能是多個(gè)的,而Contains方法自帶的比較機(jī)制是比較索引,也就是地址,所以ContainsValue方法需要改寫(xiě)
風(fēng)中過(guò)客 提問(wèn)者
個(gè)人理解,containsKey()方法中,調(diào)用的是String類(lèi)型的equals()函數(shù),查閱javaAPI文檔可知,String類(lèi)型已經(jīng)對(duì)equals()方法進(jìn)行了重寫(xiě):“將此字符串與指定的對(duì)象比較。當(dāng)且僅當(dāng)該參數(shù)不為 null,并且是與此對(duì)象表示相同字符序列的 String 對(duì)象時(shí),結(jié)果才為 true”。所以就不需要我們進(jìn)行重寫(xiě)了!
package com.imooc.collection;
import java.util.HashMap;
import java.util.Map;
/** * @author ?guokewind?
?* @date 創(chuàng)建時(shí)間: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");
比較的是字符串吧?比較字符串的時(shí)候,是需要寫(xiě)equals的
舉報(bào)
Java中你必須懂得常用技能,不容錯(cuò)過(guò)的精彩,快來(lái)加入吧
4 回答為什么老師重寫(xiě)的equals方法中name需要用equals()進(jìn)行比較而不用==?
2 回答containsValue方法為啥要重寫(xiě)equals方法???單獨(dú)重寫(xiě)hashcode方法不行嗎?
2 回答equals()方法為什么只比較屬性的值而不比較類(lèi)的方法是否相同呢?
5 回答為什么比較名字時(shí)不能用==,要用equals?
1 回答對(duì)視頻的疑問(wèn)--Map 中的containsValue() 方法的參數(shù)是什么
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢(xún)優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2015-05-21
因?yàn)镸ap的鍵值對(duì)應(yīng)的值是唯一的,而值所映射的鍵值卻有可能是多個(gè)的,而Contains方法自帶的比較機(jī)制是比較索引,也就是地址,所以ContainsValue方法需要改寫(xiě)
2015-09-30
個(gè)人理解,containsKey()方法中,調(diào)用的是String類(lèi)型的equals()函數(shù),查閱javaAPI文檔可知,String類(lèi)型已經(jīng)對(duì)equals()方法進(jìn)行了重寫(xiě):“將此字符串與指定的對(duì)象比較。當(dāng)且僅當(dāng)該參數(shù)不為 null,并且是與此對(duì)象表示相同字符序列的 String 對(duì)象時(shí),結(jié)果才為 true”。所以就不需要我們進(jìn)行重寫(xiě)了!
2015-05-04
package com.imooc.collection;
import java.util.HashMap;
import java.util.Map;
/** * @author ?guokewind?
?* @date 創(chuàng)建時(shí)間: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
比較的是字符串吧?比較字符串的時(shí)候,是需要寫(xiě)equals的