顯示具有 Java SE::泛型與收集器 標籤的文章。 顯示所有文章
顯示具有 Java SE::泛型與收集器 標籤的文章。 顯示所有文章

2015年9月30日 星期三

Queue 的應用


import java.util.ArrayDeque;
import java.util.Deque;

public class NewClass {
    public static void main(String[] args){
    
        Deque<String> stack = new ArrayDeque<>();
        stack.push("One");
        stack.push("Two");
        stack.push("Three");
        
        int size = stack.size() -1;
        while(size >= 0){
            System.out.println(stack.pop());
        }
    }
}

Map 應用


import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class MapDemo {
    public static void main(String[] args){
    
        Map<String, String> shirtList = new TreeMap<>();
        shirtList.put("S001", "Blue Shirt");
        shirtList.put("S002", "Black Shirt");
        shirtList.put("S003", "Gray Shirt");
        
        Set<String> keys = shirtList.keySet();
        System.out.println("====== Shirt List ======");
        for (String key : keys){
            System.out.println("Part#: " + key + " " 
                               + shirtList.get(key));
        } 
    }
}

Set 應用

某家公司的面試題目:
import java.util.Set;
import java.util.TreeSet;
import java.util.Scanner;

public class SetDemo {
    public static void main(String[] args){
    
        Set<Integer> num = new TreeSet<>();
        Scanner scanner = new Scanner(System.in);
        Integer[] b = new Integer[3];
        for (int i = 0; i < 3 ;  i++){
            System.out.print("Please the eage's length: ");
            num.add(scanner.nextInt());
        }
        num.toArray(b);
        if (b[2] < (b[0]+b[1])){
        switch (num.size()){
            case 1: 
                System.out.println("正三角形");
                break;
            case 2:
                System.out.println("等腰三角形");
                break;
            case 3:
                if (triangle(b)){
                    System.out.println("直角三角形");
                } else {
                    System.out.println("其他種類三角形");
                }
        }
        } else {
             System.out.println("無法構成三角形");
        }
    }

    private static boolean triangle(Integer[] b) {
        if ((b[2] * b[2]) == (b[0]*b[0] + b[1]*b[1])){
          return true;
        } else {
            return false;
        }
    }
}


2015年9月23日 星期三

Boxing & UnBoxing

AutoBoxing 與 Auto Unboxing:
public class AutoBox {
    public static void main(String[] args){
    
        Integer intObject = new Integer(1);
        int intPrimitive = 2;
        
        Integer tempInteger;
        int tempPrimitive;
        
        tempInteger = new Integer(intPrimitive);
        tempPrimitive = intObject.intValue();
        
        tempInteger = intPrimitive;  //Auto Boxing
        tempPrimitive = intObject; // Auto Unboxing
    }
}

收集器:ArrayList & List

Collection 利用 Generic 來實作的好處:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ArrayListDemo {
    public static void main(String[] args){
    
        List partList = new ArrayList<>();
        partList.add(new Integer(1111));
        partList.add(new Integer(2222));
        partList.add(new Integer(3333));
        partList.add("Hello World");  //Compile Error : Not Integer
        
        // 利用 Iterator 來遍訪 ArrayList 內的 elements 
        Iterator elements = partList.iterator();  
        while (elements.hasNext()){
            Integer partNumberObject = elements.next();
            int partNumber = partNumberObject.intValue();
            
            System.out.println("Part Number: " + partNumber);
        }
    }
}

Java 泛型概念

泛型的功能:
public class Shirt {
   private int shirtID = 0;

    public int getShirtID() {
        return shirtID;
    }

    public void setShirtID(int shirtID) {
        this.shirtID = shirtID;
    } 
}

public class CacheAny {
    private T t;
    public void add(T t){
        this.t = t;
    }
    public T get(){
        return this.t;
    }
}

public class Demo {
    public static void main(String[] args){
        CacheAny myMessages = new CacheAny<>();
        myMessages.add("This is my Shirt!");
        System.out.println(myMessages.get().toString());
        
        CacheAny myShirt = new CacheAny<>();
        myShirt.add(new Shirt());
        myShirt.get().setShirtID(123456);
        System.out.println("Shirt ID :" + myShirt.get().getShirtID());
    }
}