第一題: /* * 重寫hashcode使參數一樣的對象相等 * height(身高) <= 255cm,weight(體重) <= 255kg,blood(血型)1:A 2:B 3:AB 4:o,home <= 255(籍貫)1:北京 2:上海....等。 */ import java.util.Set; import java.util.HashSet; class CriminalDemo{ public static void main(String[] args){ Criminal c1 = new Criminal(160,60,1,1); Criminal c2 = new Criminal(160,60,1,1); Criminal c3 = new Criminal(162,60,1,1); Criminal c4 = new Criminal(163,60,2,1); Criminal c5 = new Criminal(164,60,2,1); Criminal c6 = new Criminal(165,60,2,1); Criminal c7 = new Criminal(166,60,2,1); Criminal c8 = new Criminal(167,60,3,1); Criminal c9 = new Criminal(168,60,4,1); Criminal c0 = new Criminal(160,60,4,1); Criminal c100 = null; System.out.println(c1.equals(c2)); System.out.println(c2.equals(c1)); System.out.println(c1.equals(c100)); System.out.println(c1.equals(c0)); } } class Criminal{ private int height; private int weight; private int blood; private int home; public Criminal(){ } public Criminal(int height,int weight,int blood,int home){ this.height = height; this.weight = weight; this.blood = blood; this.home = home; } /* * 移位運算 11111111,11111111,11111111,11111111 */ public int hashcode(){ return ((this.height & 255) << 32) + ((this.weight & 255) << 16) + ((this.blood & 255) << 8) + (this.home & 255); } public boolean equals(Object o){ if(o == null){ return false; } if(o == this){ return true; } if(o instanceof Criminal){ Criminal c = (Criminal)o; if(this.hashcode() == c.hashcode()){ return true; } } return false; } } 第二題: public class Person { private String name; public Person(){ } public Person(String name){ super(); this.name = name; } public String getName(){ return this.name; } } public class Dog { private String name; public Dog(){ } public Dog(String name){ super(); this.name = name; } public String getName(){ return this.name; } } import java.util.Map; import java.util.HashMap; import java.util.Map.Entry; import java.util.List; import java.util.ArrayList; public class HashDemo { public static void main(String[] args) { Map<Person,Dog> hashMap = new HashMap<Person,Dog>(); List<Person> list = new ArrayList<Person>(); Person person_obj = null; for(int i=0;i<100;i++){ person_obj = new Person("person_name" + i); hashMap.put(person_obj, new Dog("dog_name" + i)); list.add(person_obj); } //Keyset for(Person p : hashMap.keySet()){ System.out.println(p.getName() + "---" + hashMap.get(p).getName()); } //EntrySet for (Entry<Person, Dog> entry : hashMap.entrySet()) { System.out.println(entry.getKey().getName() + "---" + entry.getValue().getName()); } for(Person pl : list){ hashMap.remove(pl); } System.out.println("------------"); System.out.println(hashMap.size()); } } 第三題: java.util.Hashtable;簡介:使用了線程安全通過hash的存儲方式存儲數據,key=>vlaue存儲key不能重複。 1.put(Object key,Object value);添加數據 2.remove(Object key);刪除數據 3.size();獲取Hashtable集合大小 4.isEmpty();判斷集合是否爲空 5.get(Object key);獲取元素 import java.util.Hashtable;//線程安全hash表 import java.util.Iterator; class HashTable{ public static void main(String[] args){ Hashtable hb = new Hashtable(); hb.put(new String("one"),new Integer(1)); hb.put(new String("two"),new Integer(2)); hb.put(new String("three"),new Integer(3)); String s = new String("s"); hb.put(s,100); System.out.println(hb.size()); System.out.println(hb.isEmpty()); System.out.println(hb.get(new String("one"))); System.out.println(hb.remove(new String("one"))); System.out.println(hb.get(new String("s"))); Iterator iter_key = hb.keySet().iterator(); while(iter_key.hasNext()){ System.out.println(iter_key.next()); } Iterator iter_value = hb.values().iterator(); while(iter_value.hasNext()){ System.out.println(iter_value.next()); } } }
大數據Java基礎第十一天作業
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.