Java連載92-Collections工具類、泛型初步

1、關於集合工具類java

java.utils.Collections;

Collections工具類能夠對List集合中的元素進行排序,可是集合中的元素必須是「能夠比較的」,實現Comparable接口。

 

package com.bjpowernode.java_learning;

import java.util.Collections;

import java.util.*;

​

public class D92_1_CollecitonsToolsClass {

  public static void main(String[] args) {

    //使用Collections工具完成集合的排序

    List l = new ArrayList();

    //添加元素

    l.add(10);

    l.add(5);

    l.add(9);

    l.add(20);

    l.add(30);

    //遍歷

    for(int i=0;i<l.size();i++) {

      System.out.println(l.get(i));

    }

    System.out.println("=============");

    //或者這麼寫,使用迭代器

    Iterator it = l.iterator();

    while(it.hasNext()) {

      System.out.println(it.next());

    }

    System.out.println("=============");

    //排序

    Collections.sort(l);

    for(Iterator it2 = l.iterator();it2.hasNext();) {

      System.out.println(it2.next());

    }

    System.out.println("=============");

    //給定Set集合

    Set s = new HashSet();

    s.add(1);

    s.add(10);

    s.add(9);

    s.add(8);

    s.add(7);

    //對set集合進行排序

    //collections.sort(s);//這個編譯時失敗,不能使用這個方法

    //將set集合轉化爲List集合

    List listS = new ArrayList(s);

    Collections.sort(listS);

    for(int i=0;i<listS.size();i++) {

      System.out.println(listS.get(i));

    }

    System.out.println("=============");

    //建立List集合,,List集合中存儲Person類型,是否能夠排序?

    List ps = new ArrayList();

    ps.add(new Person92());

    ps.add(new Person92());

    ps.add(new Person92());

    ps.add(new Person92());

   

    Collections.sort(ps);//若是不把Person92類中的compareTo方法實現,這裏就會報錯,由於沒有定義排序方法,就沒法進行排序

    //將ArrayList集合轉換成線程安全的

    List myList = new ArrayList();

    Collections.synchronizedList(myList);

   

   

   

  }

}

class Person92 implements Comparable{

  public int compareTo(Object o){

    return 1;

  }

}

​

2、泛型初步node

1.關於JDK5.0的新特性:泛型(編譯期概念)git

如下程序沒有使用泛型缺點是什麼?github

若是集合不使用泛型的話,則集合中的元素類型不統一,在遍歷集合中的時候,只能拿出來Object類型,須要作大量的​強制類型轉換,很是麻煩。安全

 

package com.bjpowernode.java_learning;

​

import java.util.*;

​

public class D92_2_GenericityInitial {

  public static void main(String[] args) {

    //建立一個集合,存儲A,B,C

    Set s = new HashSet();

    //建立對象

    A92 a = new A92();

    B92 b = new B92();

    C92 c = new C92();

    s.add(a);

    s.add(b);

    s.add(c);

    //需求:遍歷集合,若是是A92類型調用m1方法,B92類型調用m2方法,C92類型調用m3方法

    Iterator i = s.iterator();

    while(i.hasNext()) {

      Object o = i.next();

      //只能作大量的強制類型轉換

      if(o instanceof A92) {

        A92 a1 = (A92)o;

        a1.m1();

      }else if(o instanceof B92) {

        B92 b1 = (B92)o;

        b1.m2();

      }else if(o instanceof C92) {

        C92 c1 = (C92)o;

        c1.m3();

      }

    }

  }

​

}

class A92{

  public void m1() {

    System.out.println("A 's m1..");

  }

}

class B92{

  public void m2() {

    System.out.println("B 's m1..");

  }

}

class C92{

  public void m3() {

    System.out.println("C 's m1..");

  }

}

2.爲何引入泛型微信

(1)能夠統一集合中的​數據類型;工具

(2)能夠減小強制類型轉化​。學習

3.​泛型的優缺點:大數據

​優勢:統一類型,減小強制類型轉化​。ui

​缺點:只能存儲​一種數據類型。

下次再講代碼實例

4、源碼:

D92_1_CollecitonsToolsClass.java

D92_2_GenericityInitial.java

https://github.com/ruigege66/Java/blob/master/D92_1_CollecitonsToolsClass.java

https://github.com/ruigege66/Java/blob/master/D92_2_GenericityInitial.java

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索