大數據Java基礎第十一天作業

第一題:
/*
 * 重寫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());
        }        
        
    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章