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

     

  • 相关阅读:
    js基础
    装饰模式,代理模式,继承
    Retrofit源码解析
    Android Studio自定义Plugin
    EMV笔记:持卡人认证(CVM)
    阿里代码规范笔记
    文章博客网址收集
    MultiDex解析
    EMV随记(1)
    RSA笔记
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12417173.html
Copyright © 2011-2022 走看看