摘要:必須重寫和方法存儲(chǔ)自定義類型元素集合報(bào)錯(cuò)元素唯一存儲(chǔ)的元素必須重寫方法和方法要求同名同年齡的人視為同一個(gè)人只能存儲(chǔ)一次創(chuàng)建集合存儲(chǔ)小美女小美女小美女
/*
必須重寫hashCode和toString方法
*/
package com.itheima.demo02.Set;
import java.util.HashSet;
/*
HashSet存儲(chǔ)自定義類型元素 set集合報(bào)錯(cuò)元素唯一: 存儲(chǔ)的元素(String,Integer,...Student,Person...),必須重寫hashCode方法和equals方法 要求: 同名同年齡的人,視為同一個(gè)人,只能存儲(chǔ)一次
*/
public class Demo03HashSetSavePerson {
public static void main(String[] args) { //創(chuàng)建HashSet集合存儲(chǔ)Person HashSetset = new HashSet<>(); Person p1 = new Person("小美女",18); Person p2 = new Person("小美女",18); Person p3 = new Person("小美女",19); System.out.println(p1.hashCode());//1967205423 System.out.println(p2.hashCode());//42121758 System.out.println(p1==p2);//false System.out.println(p1.equals(p2));//false set.add(p1); set.add(p2); set.add(p3); System.out.println(set); }
}
package com.itheima.demo02.Set;
import java.util.Objects;
public class Person {
private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; return age == person.age && Objects.equals(name, person.name); } @Override public int hashCode() { return Objects.hash(name, age); } @Override public String toString() { return "Person{" + "name="" + name + """ + ", age=" + age + "}"; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }
}
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/75116.html
摘要:并把最終的隨機(jī)數(shù)輸出到控制臺(tái)。方法,在集合中如何存儲(chǔ)元素取決于方法的返回值返回,集合中只有一個(gè)元素。創(chuàng)建集合對(duì)象,傳入比較器。 1_HashSet存儲(chǔ)字符串并遍歷 A:Set集合概述及特點(diǎn) 通過(guò)API查看即可 B:案例演示 HashSet存儲(chǔ)字符串并遍歷 import java.util.HashSet; public class Demo1_HashSet { p...
摘要:接口的特點(diǎn)接口的特點(diǎn)它是一個(gè)元素存取有序的集合。導(dǎo)致迭代器并不知道集合中的變化,容易引發(fā)數(shù)據(jù)的不確定性。枚舉已被迭代器替代。集合取出元素的方式可以采用迭代器增強(qiáng)。 01List接口的特點(diǎn) A:List接口的特點(diǎn): ?a:它是一個(gè)元素存取有序的集合。 例如,存元素的順序是11、22、33。那么集合中,元素的存儲(chǔ)就是按照11、22、33的順序完成的)。 ?b:它是一個(gè)帶有索引的...
摘要:和的區(qū)別是非線程安全的,效率高是基于線程安全的,效率低底層基于鏈表實(shí)現(xiàn),鏈表內(nèi)存是散亂的,每一個(gè)元素存儲(chǔ)本身內(nèi)存地址的同時(shí)還存儲(chǔ)下一個(gè)元素的地址?;旧隙际且詾榛A(chǔ)。 什么是集合 Java是一門面向?qū)ο蟮恼Z(yǔ)言. 為了方便操作多個(gè)對(duì)象,那么我們就得把這多個(gè)對(duì)象存儲(chǔ)起來(lái) 想要存儲(chǔ)多個(gè)對(duì)象(變量),我們就需要一個(gè)容器 集合就是一個(gè)放數(shù)據(jù)的容器(集合類存放的都是對(duì)象的引用,而非對(duì)象本身) ...
摘要:如果你知道用集合,就用。在集合中常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快底層數(shù)據(jù)結(jié)構(gòu)是哈希表。依賴兩個(gè)方法和底層數(shù)據(jù)結(jié)構(gòu)是二叉樹(shù)。 第三階段 JAVA常見(jiàn)對(duì)象的學(xué)習(xí) 集合框架——Set接口 showImg(https://segmentfault.com/img/remote/1460000019683927?w=700&h=280); Lis...
JDK 是如何判斷兩個(gè)對(duì)象是否相同的呢?判斷的流程是什么? 參考解答:JDK 會(huì)先判斷兩個(gè)對(duì)象的hashCode是否相同,如果hashCode不同,則說(shuō)明肯定是兩個(gè)不同的對(duì)象了;如果hashCode相同再通過(guò)equals()方法進(jìn)行進(jìn)一步比較,如果equals方法返回true,則說(shuō)明兩個(gè)對(duì)象是相同的,如果equals方法返回false說(shuō)明兩個(gè)對(duì)象不同。 如何驗(yàn)證 怎么來(lái)驗(yàn)證這個(gè)問(wèn)題呢?我們知道Ha...
閱讀 2040·2021-11-23 09:51
閱讀 931·2021-11-19 09:40
閱讀 886·2021-10-27 14:20
閱讀 5225·2021-10-09 09:52
閱讀 3367·2021-10-09 09:44
閱讀 1785·2021-10-08 10:05
閱讀 5296·2021-09-09 11:47
閱讀 3552·2019-08-30 12:47