Java基本問題(4)

/*
     * 未使用泛型面對的問題
     * 一、能夠添加任何類型元素
     * 二、類型轉換出現ClassCastException異常
     * 
     * 在集合中使用泛型,規定添加元素的類型
     */
    @Test
    public void test01() {
        List l = new ArrayList();
        l.add(123);
        l.add(222);
        l.add("abc");
        l.add(new a("lisi", 23));
        l.add(333);

//      java.lang.ClassCastException 異常
//      Collections.sort(l); 

        List<Integer> l1 = new ArrayList<Integer>();
        l1.add(123);
        l1.add(222);
//      l1.add("abc"); 不能添加
//      l1.add(new a("lisi", 23)); 不能添加
        l1.add(333);

        System.out.println(l1);

        TreeMap<a, Integer> m = new TreeMap<a, Integer>();
        m.put(new a("lisi",23), 10000);
        m.put(new a("zhangs",34), 20000);
        m.put(new a("lisi",55), 100000);
        m.put(new a("zhangliu",12), 2000);
        m.put(new a("wangw",45), 20000);

        Set<Map.Entry<a, Integer>> set = m.entrySet();
        Iterator<Map.Entry<a, Integer>> i = set.iterator();
        while (i.hasNext()) {
            System.out.println(i.next());
        }
    }

    /*
     * 未使用泛型面對的問題
     * 一、能夠添加任何類型元素
     * 二、類型轉換出現ClassCastException異常
     * 
     * 在集合中使用泛型,規定添加元素的類型
     */
    @Test
    public void test01() {
        List l = new ArrayList();
        l.add(123);
        l.add(222);
        l.add("abc");
        l.add(new a("lisi", 23));
        l.add(333);

//      java.lang.ClassCastException 異常
//      Collections.sort(l); 

        List<Integer> l1 = new ArrayList<Integer>();
        l1.add(123);
        l1.add(222);
//      l1.add("abc"); 不能添加
//      l1.add(new a("lisi", 23)); 不能添加
        l1.add(333);

        System.out.println(l1);

        TreeMap<a, Integer> m = new TreeMap<a, Integer>();
        m.put(new a("lisi",23), 10000);
        m.put(new a("zhangs",34), 20000);
        m.put(new a("lisi",55), 100000);
        m.put(new a("zhangliu",12), 2000);
        m.put(new a("wangw",45), 20000);

        Set<Map.Entry<a, Integer>> set = m.entrySet();
        Iterator<Map.Entry<a, Integer>> i = set.iterator();
        while (i.hasNext()) {
            System.out.println(i.next());
        }
    }

    public void test02() {
        /*
         * 通配符 ?
         * List<?> 是 List<Object> List<String> 的父類
         * Collection< ? extends E > 是 Collection<E>及其子類
         * Collection< ? super E > 是 Collection<E>及其父類
         * 注意:
         * 一、不能在靜態方法中使用類的泛型
         * 二、不能再try...catch中使用類的泛型
         * 三、不容許向List<?>的類添加元素,null除外;
        */
        List<Object> l1 = null;
        List<String> l2 = new ArrayList<String>();
        List<?> l3 = null;
//      l1 = l2;
        l3 = l2;
        l3 = l1;
//      l3.add(123);
        l3.add(null);
    }

    @Test
    public void test03() {
        DAO<a> dao = new DAO<a>();
        dao.map = new HashMap<String, a>();
        dao.add("1001", new a("lisi",23));
        dao.add("1002", new a("zhangs",20));
        dao.add("1003", new a("wang5",35));

        System.out.println(dao.get("1001")); //A [name=lisi, age=23]
        System.out.println(dao.list()); //[A [name=wang5, age=35], A [name=lisi, age=23], A [name=zhangs, age=20]]

        dao.update("1003", new a("wangw",12));
        System.out.println(dao.get("1003")); //A [name=wangw, age=12]

    }

class DAO<T> {
    Map<String, T> map = null;

    public void add(String id, T entity) {
        map.put(id, entity);
    }

    public T get(String id) {
        return map.get(id);
    }

    public void update(String id, T entity) {
        map.put(id, entity);
    }

    public void remove(String id) {
        map.remove(id);
    }

    public List<T> list() {
        List<T> list = new ArrayList<T>();
        for (String s : map.keySet()) {
            list.add(map.get(s));
        }
        return list;
    }
}
相關文章
相關標籤/搜索