Java Day25

泛型的使用

/*自定义泛型类Person 其中T相当于形式参数负责斩占位,具体数值由实参决定
<T>看作是一种名字为T的数据类型即可
 */
public class Person<T> {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public /*static*/T getGender() { //不是泛型方法,不能用static修饰,因为该方法中的T在new对象的时候才能明确类型
        return gender;
    }

    public void setGender(T gender) {
        this.gender = gender;
    }

    public Person() {
    }

    public Person(String name, int age, T gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    private String name;
    private int age;
    private T gender; //不确定用什么类来表示,先用T占位
    //自定义泛型方法将参数指定数组中的所有元素打印出来
    public static  <T1> void printArray(T1[] arr){
        for(T1 tt: arr){
            System.out.println("tt="+tt);
        }
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }
}
public class PersonTest {
    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person("Lili",20,"woman");
        System.out.println(p2); // Person{name='Lili', age=20, gender=woman}
        //在创建对象的同时指定数据类型,用于给T初始化
        Person<String> p3 = new Person<>();
        p3.setGender("女");
        System.out.println(p3);//Person{name='null', age=0, gender=女}

        Person<Boolean> p4 = new Person<>();
        p4.setGender(true);
        System.out.println(p4);Person{name='null', age=0, gender=true}
        //调用泛型方法进行测试
        Integer[] arr = {11,22,33,44,55};
        Person.printArray(arr);//11,22,33,44,55
    }
}

泛型类被继承时的处理方式

使用不同的继承方式,在创建对象时传对应类型的参数 

通配符

 


  set集合的使用

        set系类结合:无序、无重复、无索引

        二叉树 

有序二叉树


 HashMap的遍历

public class HashMapStudy {
    public static void main(String[] args) {
        //一般来说,最好初始化一下, 小于12的就不要初始化了
        // 默认的就是16,因为加载因子是0.75,也就是到16*0.75=12的时候会扩容
        Map<String, String> map = new HashMap<>(3);

        map.put("welcome","to");
        map.put("java","study");
        map.put("wechat","best396975802");

        //遍历方法1: 先遍历key , 再取出value
        System.out.println("遍历方法1: 先遍历key , 再取出value");
        for (String key : map.keySet()) {
            System.out.println("key is "+key);
            System.out.println("value is "+ map.get(key));
        }
        //遍历方法2: 直接遍历value
        System.out.println("遍历方法2: 直接遍历value");
        for (String value : map.values()) {
            System.out.println("value is "+value);
        }

        //遍历方法3: 通过遍历entry来取Key和value,推荐的方法!!!
        System.out.println("遍历方法3: 通过遍历entry来取Key和value,推荐的方法!!!");
        for (Map.Entry<String, String> entry : map.entrySet()) {
            System.out.println("key is "+entry.getKey());
            System.out.println("value is "+ entry.getValue());
        }

        //遍历方法4: 通过forEach方法直接遍历key和value
        System.out.println("遍历方法4: 通过forEach方法直接遍历");
        map.forEach((key,value)->{
            System.out.println("key is "+ key);
            System.out.println("value is "+ value);
        });
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值