zoukankan      html  css  js  c++  java
  • Java连载93-泛型实现Comparable、自定义泛型

    一、泛型初步

    1.泛型是编译阶段的语法,在编译阶段统一集合中的类型。

    package com.bjpowernode.java_learning;
    
    import java.util.*;
    
    public class D93_1_GenercityInitial {
    
      public static void main(String[] args) {
    
        //创建一个List集合,只能存储字符串类型
    
        List<String> strs = new ArrayList<String>();
    
        //添加元素
    
        strs.add("jodsf");
    
        strs.add("jodsffds");
    
        strs.add("jodsfsdf");
    
        strs.add("jodsfjhgfh");
    
        //遍历
    
        Iterator<String> it = strs.iterator();
    
        while(it.hasNext()) {
    
          String s = it.next();
    
          System.out.println(s);
    
        }
    
       
    
        Map<String,Integer> maps = new HashMap<String,Integer>();
    
        //存储
    
        maps.put("西瓜",10);
    
        maps.put("苹果",10);
    
        maps.put("香蕉",20);
    
        //遍历
    
        Set<String> keys = maps.keySet();
    
        Iterator<String> it2 = keys.iterator();
    
        while(it2.hasNext()) {
    
          String k = it2.next();
    
          Integer v =  maps.get(k);
    
          System.out.println(k+"----->"+v);
    
        }
    
      }
    
    }

    二、Comparable定义泛型

    1.可以使用泛型是实现Comparable比较类,可以省去了强制转换类型的麻烦

    2.自定义泛型​

    package com.bjpowernode.java_learning;
    
    import java.util.*;
    
    ​
    
    public class D93_2_GenericityInitial {
    
      public static void main(String[] args) {
    
        SortedSet<Manager93> ss = new TreeSet<Manager93>();
    
        //添加
    
        Manager93 m1 = new Manager93(1000.0);
    
        Manager93 m2 = new Manager93(1500.0);
    
        Manager93 m3 = new Manager93(1300.0);
    
       
    
        ss.add(m1);
    
        ss.add(m2);
    
        ss.add(m3);
    
        //遍历
    
        Iterator<Manager93> it = ss.iterator();//迭代器也要使用泛型,写的时候忘了
    
        while(it.hasNext()) {
    
          Manager93 m = it.next();
    
          System.out.println(m);
    
        }
    
        System.out.println("=============");
    
        MyClass93<String> mc = new MyClass93<String>();
    
        //mc.m1(100);这个语句就报错了,因为我们上面指定了MyClass93类中存储String类型;
    
        mc.m1("100");
    
      }
    
    }
    
    class Manager93 implements Comparable<Manager93>{//实现的Comparable也要使用泛型,用的时候也忘了
    
      double sal;
    
      Manager93(double sal){
    
        this.sal = sal;
    
      }
    
      public String toString() {
    
        return sal+"";
    
      }
    
      public int compareTo(Manager93 m) {
    
        double sal1 = this.sal;
    
        double sal2 = m.sal;//这里使用了泛型不需要强制类型转换了
    
        if(sal1>sal2) {
    
          return 1;
    
        }else if (sal1==sal2){
    
          return 0;
    
        }else {
    
          return -1;
    
        }
    
      }
    
    }
    
    //自定义泛型,这里的T代表可以指定任意类型
    
    class MyClass93<T>{
    
      public void m1(T t) {
    
        System.out.println(t);
    
      }
    
    }

    三、源码:

    D93_1_GenercityInitial.java

    D93_2_GenericityInitial.java

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

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

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

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

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

     

  • 相关阅读:
    框架
    css样式表。作用是美化HTML网页.
    表单的制作
    表格的制作
    常用标签的制作
    标签的制作
    poj2104(K-th Number)
    Codeforces Round #359 (Div. 2) D. Kay and Snowflake
    Codeforces Round #359 (Div. 2) C. Robbers' watch
    HDU3308(LCIS) 线段树好题
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/12431857.html
Copyright © 2011-2022 走看看