IT十八掌作业_java基础第十一天_集合
1.定義罪犯Criminal類,height(身高)/weight(體重)/blood(血型)/home(籍貫)屬性。
????重寫hashcode和equals,使用四個屬性的組合進行實現。
????創建HashSet集合,里面存放20個Criminal對象,其中O型血2人,A型血3人,B型血4人,AB型血1人,其余血型不詳。
????注意:hashcode()方法實現時,要求身高、體重、和血型三個屬性合成一個數字,實現兩兩比較的高效算法。
2.Map:
-----------
????key(鍵)?-?value(值)?:kv對.
????創建HashMap,Person為key,Dog為value。
????存放100元素,遍歷map集合,兩種方式。EntrySet?+?KeySet.
????刪除操作。remove();
3.HashTable:線程安全的。
---------------
????1.put
????2.
????3.
????4.
-----------------------------------------------------------------------------------------------------
keySet方法 : 返回的是鍵的set集合,通過get(key)方法獲取value
entrySet方法 : 返回的是映射關系的set集合,通過getKey(),getValue()方法獲取key,value
答:
1.
package?com.it18zhang.day11;
?
import?java.util.HashMap;
import?java.util.HashSet;
import?java.util.Map;
import?java.util.Set;
?
public?class?HashSetTest?{
?
????public?static?void?main(String[]?args)?{
????????Set<Criminal>?set?=?new?HashSet<Criminal>();
?????????
????????Criminal?c1?=?new?Criminal(180,70,2,"江西");
????????Criminal?c2?=?new?Criminal(176,60,1,"北京");
????????Criminal?c3?=?new?Criminal(160,70,0,"福建");
????????Criminal?c4?=?new?Criminal(183,73,3,"湖南");
????????Criminal?c5?=?new?Criminal(183,73,3,"湖南");
?????????
????????set.add(c1);
????????set.add(c2);
????????set.add(c3);
????????set.add(c4);
????????set.add(c5);
?????????
????????System.out.println(c1.equals(c2));
????????System.out.println(c5.equals(c4));
????????for(Criminal?c?:?set){
????????????out(c);
????????}
????}
?????
????public?static?void?out(Criminal?c){
????????Map<Integer,String>?map?=?new?HashMap<Integer,String>();
????????map.put(0,?"A");
????????map.put(1,?"B");
????????map.put(2,?"AB");
????????map.put(3,?"O");
????????System.out.println("身高"+c.getHeight()+"體重"+c.getWeight()+"血型"+map.get(c.getBlood())+"籍貫"+c.getHome());
?????????
????}
?
}
?
package?com.it18zhang.day11;
?
public?class?Criminal?{
????private?int?height;
????private?int?weight;
????private?int?blood;
????private?String?home;
????public?Criminal(){}
????public?Criminal(int?height,?int?weight,?int?blood,?String?home)?{
????????if(height?<=?0){
????????????System.out.println("身高不能為負!");
????????????System.exit(-1);
????????}else?if(weight?<=?0){
????????????System.out.println("體重不能為負");
????????}else?if(blood?>?3?||?blood?<?0){
????????????System.out.println("血型,必須為0-3之間的值");
????????????System.exit(-1);
????????}else{
????????????this.height?=?height;
????????????this.weight?=?weight;
????????????this.blood?=?blood;
????????????this.home?=?home;
????????}
????}
?????
????public?int?getHeight()?{
????????return?height;
????}
????public?void?setHeight(int?height)?{
????????this.height?=?height;
????}
????public?int?getWeight()?{
????????return?weight;
????}
????public?void?setWeight(int?weight)?{
????????this.weight?=?weight;
????}
????public?int?getBlood()?{
????????return?blood;
????}
????public?void?setBlood(int?blood)?{
????????this.blood?=?blood;
????}
????public?String?getHome()?{
????????return?home;
????}
????public?void?setHome(String?home)?{
????????this.home?=?home;
????}
????/*?
?????*重寫hashcode?
?????*/
????public?int?hashCode()
????{
????????return?height+weight+blood+home.hashCode();
????}
????/**
?????*?重寫equals方法
?????*/
????public?boolean?equals(Object?obj)
????{
????????if(obj?==?null)
????????????return?false;
????????if(obj?==?this)
????????????return?true;
?????????
????????//height,weight,blood,home四個條件同時滿足才相同。
????????if(obj.getClass()?==?Criminal.class){
????????????Criminal?c?=?(Criminal)obj;
????????????if(c.height?==?this.height?&&?c.weight?==?this.weight?&&?c.blood?==?this.blood?&&?this.home.equals(c.home))
????????????????return?true;
????????}
?????????
????????return?false;
?????????
????}
?????
}
2.Map
package?com.it18zhang.day11;
?
import?java.util.ArrayList;
import?java.util.HashMap;
import?java.util.List;
import?java.util.Map;
import?java.util.Map.Entry;
?
public?class?HashMapTest?{
????public?static?void?main(String[]?args)?{
????????Map<Person,Dog>?map?=?new?HashMap<Person,Dog>();
????????List<Person>?keys?=?new?ArrayList<Person>();
????????for(int?i?=?0;?i?<?100;?i++){
????????????Person?p?=?new?Person("Person"+i,i);
????????????map.put(p,?new?Dog("dog"+i,i));
????????????keys.add(p);
????????}
????????System.out.println("---------------------------------keySet-----------");
????????for(Person?p?:?map.keySet()){
????????????System.out.println(p.getName()+"\t"+map.get(p).getName());
????????}
????????System.out.println("--------------------------------EntrySet----------");
????????for(Entry<Person,Dog>?entry?:?map.entrySet()){
????????????System.out.println(entry.getKey().getName()+"\t"+entry.getValue().getName());
????????}
????????System.out.println("------------remove前---------------");
????????for(Person?p?:?keys){
????????????map.remove(p);
????????}
?????????
????????System.out.println("------------remove后---------------");
????????System.out.println("map是否為空"+map.isEmpty());
????}
}
package?com.it18zhang.day11;
?
public?class?Person?{
????private?String?name;
????private?int?age;
?????
????public?Person()?{
????????super();
????}
?
????public?Person(String?name,?int?age)?{
????????super();
????????this.name?=?name;
????????this.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;
????}
????public?int?hashCode(){
????????return?name?==?null??age?:?name.hashCode()?+?age;
????}
????public?boolean?equals(Object?obj){
????????if(obj?==?null)
????????????return?false;
????????if(obj?==?this)
????????????return?true;
????????if(obj.getClass()?==?Person.class){
????????????Person?p?=?(Person)obj;
????????????//name是否相同
????????????boolean?nameEqu?=?false;
????????????if(this.name?==?null){
????????????????if(p.name?==?null)
????????????????????nameEqu?=?true;
????????????????else{
????????????????????nameEqu?=?false;
????????????????}
????????????}
????????????else{
????????????????nameEqu?=?name.equals(p.name);
????????????}
?????????????
????????????boolean?ageEqu?=?(this.age?==?p.age);
?????????????
????????????return?nameEqu?&&?ageEqu;
????????}
????????return?false;
????}
}
package?com.it18zhang.day11;
?
public?class?Dog?{
????private?String?name;
????private?int?age;
????public?Dog()?{
?????????
????}
?????
????public?Dog(String?name,?int?age){
????????this.name?=?name;
????????this.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;
????}
?
?????
?????
?????
}
轉載于:https://blog.51cto.com/liubx/1784026
總結
以上是生活随笔為你收集整理的IT十八掌作业_java基础第十一天_集合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新建指令避开 Avalon 的 ms-d
- 下一篇: 语义化,让你的网页更好的被搜索引擎理解