JAVA学习笔记10 TreeSet

在这里插入图片描述

import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Integer> ts=new TreeSet<Integer>();

        ts.add(10);
        ts.add(40);
        ts.add(30);
        ts.add(20);
        ts.add(50);

        ts.add(30);

        for (Integer i:ts){
            System.out.println(i);
        }
    }
}

执行结果:
10
20
30
40
50

在这里插入图片描述

泛型的好处:

public class GenericDemo {
    public static void main(String[] args) {
        Collection c=new ArrayList();
        c.add(11);
        c.add("hello");
        c.add("world");

        Iterator it=c.iterator();
        while (it.hasNext()){
            String s=(String)it.next();
            System.out.println(s);
        }
    }
}
执行结果:
Exception in thread "main" java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.String (java.lang.Integer and java.lang.String are in module java.base of loader 'bootstrap')
	at General.GenericDemo.main(GenericDemo.java:16)

原因是这个集合中既有11(integer类型)又有“hello”(String类型),那么在 String s=(String)it.next();这一步中就会报错。
而如果使用泛型:
在这里插入图片描述就会在执行之前,编译器中就报错,相当于是设定了这个集合collection中只能存储String类型,存别的类型就会报错。并且在后面也不需要强制类型转换了。
在这里插入图片描述

泛型类使用的好处

在这里插入图片描述使用泛型类改进之后,代码量就大大减少了,传入的参数是什么类型打印的结果就是什么类型。
在这里插入图片描述如:
在这里插入图片描述

public class GenericDemo02 {
    public static void main(String[] args) {
//        Generic02 g=new Generic02();
//        g.show("林青霞");
//        g.show(11);
//        g.show(true);

//        Generic02<String> g1=new Generic02<String>();
//        g1.show("张柏芝");

        Generic02 g=new Generic02() ;
        g.show("林青霞");
        g.show(30);
        g.show(true);
    }
}

执行结果:
林青霞
30
true

在这里插入图片描述例如:
在这里插入图片描述相当于就是把接口弄成了泛型的一种接口,使得实现这个接口的实现类也必须要继承/重写这个泛型和泛型方法。

在这里插入图片描述在这里插入图片描述

可变参数

在这里插入图片描述如果要实现求sum中有5,6,7…n个参数的话,那么肯定不能写完n种参数的sum函数。这里就可以使用可变参数。

在这里插入图片描述

public class ArgsDemo {
    public static void main(String[] args) {
        sum(1,2,4,5,56,3,2);
    }
    public static int sum(int ...a){
        System.out.println(a);
        return  0;
    }
}
执行结果:
[I@43a25848

由执行结果中的"["看出,这个a实际上是一个数组,里面存储的是传进去的参数。

package Args;

public class ArgsDemo {
    public static void main(String[] args) {
        System.out.println(sum(1,2,4,5,56,3,2));

    }
    public static int sum(int ...a){
//        System.out.println(a);
//        return  0;
        int sum=0;
        for (int i:a){
            sum+=i;
        }
        return sum;
    }
}

执行结果:
73

还有一点需要注意的是,如果方法的参数既有可变参数又有固定参数,那么可变参数必须放到最后否则会报错。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值