泛型和枚举

1.泛型的简介

在泛型中写的是一个对象,不能是基本的数据类型(写起对应的包装类)

*List遍历方式:for循环、迭代器、增强for

*set遍历方式:迭代器、增强for(元素无序、不能重复出现)

*在map上使用泛型

  Map(key,value)

  遍历方式:1)获取所有的key,通过key得到value,使用get方法

                    2)获取key和value的关系

package com.dzg.learn.day07;

import org.junit.jupiter.api.Test;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class TestGenericity {

    @Test
    public void testMap(){
        /**
         * 在Map上使用泛型
         */
        Map<String,String> mapsets = new HashMap<String,String>();
        mapsets.put("a","a");
        mapsets.put("b","b");
        mapsets.put("c","c");
        mapsets.put("d","d");

        /**
         * map的遍历方式1:
         *      获取所有的key,通过key值来获取value值
         */
        Set<String> keysets = mapsets.keySet();
        for(String str:keysets){
            System.out.println(str+":"+mapsets.get(str));
        }
        System.out.println("=========");
        /**
         * map的遍历方式2:
         *      获取key和value的关系
         */
        //得到key和value的关系
        Set<Map.Entry<String,String>> sets1 = mapsets.entrySet();
        //遍历sets1
        for (Map.Entry<String,String> entry:
             sets1) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
    }
}

2.泛型方法

    *定义一个数组,实现指定位置的元素的交换 


    @Test
    public void swapElement(){
        Integer arr1[] = {1,2,3,4,5};
        System.out.println(Arrays.toString(arr1));
        swap(arr1,1,3);
        System.out.println(Arrays.toString(arr1));

        System.out.println("============");
        String arr2[] ={"aa","bb","cc","dd"};
        System.out.println(Arrays.toString(arr2));
        swap(arr2,0,3);
        System.out.println(Arrays.toString(arr2));
    }

    /**
     * 泛型交换的方法,T表示任意类型
     * 若不是用泛型的方法,对于不同类型的数组交换数据,需要写出不同的方法(重载)
     * @param arr
     * @param i
     * @param j
     * @param <T>
     */
    public <T>void swap(T[] arr,int i,int j){
        T temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

泛型的擦除:泛型只出现在源代码阶段,当编译之后泛型就不存在了

3.泛型在类上使用(了解)

  

4.枚举的简介

 

***构造方法有参数,在每个实例上都需要传递参数

***在没个枚举类都实现抽象方法

 

package com.dzg.learn.day07;

import org.junit.jupiter.api.Test;

public class TestEnum {

    //知道枚举的对象,得到枚举的名称和下标
    @Test
    public void test1(){
        //得到枚举的对象
        Color color1 = Color.RED;
        //枚举的名称
        String str = color1.name();
        //枚举的下标
        int index = color1.ordinal();
        System.out.println(index +":"+str);
    }
    //根据枚举的名称,得到枚举的对象和名称
    @Test
    public void test2(){
        String name = "GREEN";
        //得到对象
        Color color = Color.valueOf(name);
        //枚举下标
        int index = color.ordinal();
        System.out.println(index+":"+color);
    }

    //知道枚举的下标,得到枚举的名称和对象
    @Test
    public void test3(){
        int index = 2;
        //得到枚举的对象
        Color color[] = Color.values();
        //根据下标得到对象
        Color col = color[index];
        String name = col.name();
        System.out.println(name+":"+col);
    }
}

enum Color{
    RED,GREEN,YELLOW;
}

5.静态导入(了解)

  可以在java类中直接导入静态的常量或者方法,导入之后可以直接使用对应的方法

  import static *******

  import static java.util.Arrays.sort

6.自动拆装箱

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

            八种基本数据类型对应的包装类:int -- Integer 、char --Character 其他的首字母大写

   拆箱:把基本的包装类转换成基本的数据类型

  JDK向下兼容

7.增强for循环

 * 实现Iterable接口

 *map没有实现该接口,list和set实现了

 * 底层就是迭代器,出现为了替代迭代器

8.可变参数:

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

可以使用可变参数。

   数据类型...数组名称(三个点)、必须放在参数列表最后

  add(int...nums)nums相当于一个数组

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值