Java连载92-Collections工具类泛型初步

Posted ruigege0000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java连载92-Collections工具类泛型初步相关的知识,希望对你有一定的参考价值。

一、关于集合工具类

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;

  }

}

?

技术图片

二、泛型初步

1.关于JDK5.0的新特性:泛型(编译期概念)

以下程序没有使用泛型缺点是什么?

如果集合不使用泛型的话,则集合中的元素类型不统一,在遍历集合中的时候,只能拿出来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.?泛型的优缺点:

?优点:统一类型,减少强制类型转化?。

?缺点:只能存储?一种数据类型。

下次再讲代码实例

四、源码:

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.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

技术图片 

 

以上是关于Java连载92-Collections工具类泛型初步的主要内容,如果未能解决你的问题,请参考以下文章

java泛型——泛型类泛型方法泛型接口

Java泛型:泛型类泛型接口和泛型方法

Java泛型:泛型类泛型接口和泛型方法

Java泛型:泛型类泛型接口和泛型方法

Java泛型知识点:泛型类泛型接口和泛型方法

java反射获得泛型参数getGenericSuperclass():获取到父类泛型的类型