zoukankan      html  css  js  c++  java
  • 泛型简介

    泛型简介

                  为什么使用泛型?

                         一般使用在集合上

                                比如说把一个字符串类型值放入集合里面,这个时候,这个值放入集合·之后会失去本身的类型,只能是object类型 这个时候,比如想要对这个值进行类型转换,很容易出现类型转换错误,怎么解决这个错误,可以使用泛型来解决。

    在集合上如何使用泛型

           List  set  map

           泛型语法  集合<String> 比如  List<String>

         在list上面使用泛型:

    ArrayList  linkedList  Vector这三个区别  

    //遍历list有三种
    
            //普通for循环    迭代器      增强for
    
           
    
            //普通for循环
    
            for(int i = 0;i<list.size();i++){
    
                String s = list.get(i);
    
                System.out.println(s);
    
            }
    
            System.out.println("======");
    
            //使用增强for循环
    
            for (String s1 : list) {
    
                System.out.println(s1);
    
            }
    
            System.out.println("======");
    
            //使用迭代器
    
            Iterator<String> it = list.iterator();
    
            while(it.hasNext()){
    
                System.out.println(it.next());
    
            }
    
    //泛型使用set集合上
        @Test
    
        public void testSet(){
    
            Set<String> set = new HashSet<String>();
    
            set.add("www");
    
            set.add("qqq");
    
            set.add("zzz");
    
            //遍历set
    
            //两种     迭代器     增强for
    
            //增强for   输出是无序的
    
            for (String s2: set) {
    
                System.out.println(s2);
    
            }
    
            //使用迭代器
    
            Iterator<String> it1 = set.iterator();
    
            while(it1.hasNext()){
    
                System.out.println(it1.next());
    
            }
    
        }
    
     
    
     
    
    //在map上使用泛型   map结构  : key-valu形式
        @Test
    
        public void testMap(){
    
            Map<String,String> map = new HashMap<String,String>();
    
            map.put("aaa","111");
    
            map.put("bbb","222");
    
            map.put("ccc","333");
    
            //遍历map   两种  
    
            //1获取所有的key   通过key 得到value  使用get方法
    
            //2获取key和value的关系
    
            //使用第一种
    
            //获取所有的key
    
            Set<String> sets = map.keySet();
    
            //遍历所有的key返回set
    
            for (String key : sets) {
    
                //通过key得到value
    
                String value = map.get(key);
    
                System.out.println(key + ":" + value);
    
            }
    
            System.out.println("====");
    
            //第二种  得到key  和value关系
    
            Set<Entry<String,String>> sets1 = map.entrySet();
    
            //遍历sets1   增强for
    
            for (Entry<String, String> entry : sets1) {
    
                //entry是key 和value关系
    
                String keyv = entry.getKey();
    
                String valuev = entry.getValue();
    
                System.out.println(keyv + ":" + valuev);
    
            }
    
        }

    写基本数据类型类型对应包装类

            byte    Byte

            short  Short

            int     Integer

            long   Long

            float   Float

            double  Double

            char    Character

            boolean     Boolean

    6泛型使用在方法上  用的很多

      定义一个数组   指定位置交换

    方法的逻辑相同,只是数据类型不同,这时候使用泛型方法

    public static <T> void swap1(T[] arr,int a,int b){
    
            T temp = arr[a];
    
            arr[a] = arr[b];
    
            arr[b] = temp;
    
        }

    7泛型在类上使用(了解)

           在类上定义·一个类型  这个类型可以在类中直接使用

    public class TestDemo04<T> {
    
        //在类里面直接使用T的类型
    
        T aa;
    
        public void test11(T bb){
    
           
    
        }
    
       
    
        //写静态方法  在类上面定义泛型,不能在静态方法里面使用  如要使用需要自己定义
    
        public static <A>void test12(A cc){
    
           
    
        }
    
    }

    枚举

           什么是枚举  ?  

                  **需要在一定范围内取值,这个值只能是这个范围内中任意一个

                  **现实场景  :交通信号灯  有三种颜色  每次只能亮三种颜色里面任意一个。

    //使用枚举实现   枚举的构造方法是私有的

    enum Color3{
    
        RED,GREEN,YELLOW;
    
    }

      

    (简写方式)

    class Color2{
    
        //构造方法私有化
    
        private Color2(){}
    
        public static final Color2 RED = new Color2();
    
        public static final Color2 GREEN = new Color2();
    
        public static final Color2 YELLOW = new Color2();
    
       
    
    }

    特殊的枚举操作

      在枚举里面有构造方法

      有抽象方法

    9枚举的api操作

           **name()  : 返回枚举的名称

           ** ordinal()  : 枚举的下标,下表从0开始    

           **valueOf(Class<T> enumType, String name)  ;得到枚举对象

    还有两个方法,都是这两个方法不在api里面编译的时候生成的两个方法

    valueof(String name)  转换枚举对象

    values()  获取所有枚举对象数组

     

    10静态导入(了解)

    int[] arr1 = {10,2,1,32,56};

    Arrays.sort(arr1);

    System.out.println(Arrays.toString(arr1));   排列

    11自动拆装箱   jdk5.0

           装箱

                  把基本数据类型转换成包装类

           拆箱

                  把包转换成基本数据类型

    //自动装箱

            Integer i = 10;

            //自动拆箱

            int m = i;

     

    jdk 会向下兼容的

    可变参数

    * 可变参数

     * 如果实现多个方法,这些方法里面的逻辑基本相同,唯一不同的是传递的参数个数,可以使用可变参数

    public static void add(int...nums){
    
            //nums理解为一个数组,这个数组可以存储传递来的参数
    
            //System.out.println(nums.length);
    
            //遍历数组
    
            int sum = 0;
    
            for(int i = 0;i<nums.length;i++){
    
                sum += nums[i];
    
            }
    
            System.out.println(sum);
    
           
    
        }

    只能做参数   ;  方法列只能有一个可变参数;  方法的参数列表中的可变参数,必须放在参数最后   add(int a;int…nums)

     

  • 相关阅读:
    Android四大基本组件介绍与生命周期
    TRIZ系列-创新原理-23-反馈原理
    hibernate之6.one2many单向
    软件评測师真题考试分析-5
    WAS集群系列(3):集群搭建:步骤1:准备文件
    Android Developer:合并清单文件
    移动均值滤波与中值滤波
    使用React的static方法实现同构以及同构的常见问题
    mysql合并同一列的值
    iOS开发
  • 原文地址:https://www.cnblogs.com/mzdljgz/p/10390172.html
Copyright © 2011-2022 走看看