杂集:(TreeSet去重,各类转型,静态导包,可变参数,加强for循环)

Listj集合:有序,可重复,有索引

有序:这里的有序,是指按照元素插入的顺序排序

Set集合:无序,不可重复,无索引

无序:这里的无序是指Set元素不会按照添加的顺序排列,也不保证任何特定的顺序,但是

HashSet和TreeSet会自动将元素进行(int类型)大小排序,字符(统一大/小写)按照ASCII码排序

HashSet:HashSet中的比较:我们自己定义的Student类中并没有写hashCode()方法和equals()方法,所以底层调用都是该类的父类Object中的hashCode()方法和equals()方法,比较的都是地址值,所以重写equals方法和HashCode方法,就可以进行比较

TreeSet:红黑树,自平衡树,可以实现大小排序,且去重,

如果要是引用数据类型,比如Students学生类,有年龄和姓名,按照年龄排序。首先当然要重写toString方法!compare排序有1、自然排序,2、比较器排序。分析:如果只用年龄排序,但是如果同年龄,不同名字的人,Treeset也会认为重复从而不添加到Set集合中。所以我们使用1、自然排序,就是针对构造方法无参的一种排序算法,如果用,先要Students类去实现comparable接口,然后还要重写compareTo方法通过分析compare的底层方法,我们知道是将集合插入的年龄和根节点(集合中已有的年龄)比较,得到的差值和0比较,如果相同就再一次比较姓名。差值<0的的放左,>0放右边,所以以后可以根据这个特点实现升序或降序。   2、比较器排序,就要去Students类实现compartor接口,然后重写compare方法

静态导包:import java.util.Math.max,只导入max方法,如果自己定义的一个方法和导包方法重名,那么按照就近原则,就会执行自定义方法,但是如果坚持要用导包的,可以在前面包导包的前缀名都写完整。

示例如下:

//import static java.lang.Math.max;
import static java.lang.Math.min;
//import static java.lang.Math.*;
/*
    静态导入: 前提使用的方法是静态的
 */
public class StaticImportDemo1 {
    public static void main(String[] args) {
//        System.out.println(Math.max(10,45));
//        System.out.println(Math.max(312,45));
//        System.out.println(Math.max(2,24));
//        System.out.println(Math.max(13,512));
        System.out.println(max(213,634));
        System.out.println(java.lang.Math.max(213,52));
        System.out.println(Math.max(213,52));
//        System.out.println(max(81,234));
//        System.out.println(min(232,51));
    }
    //使用的是自己的
    public static int max(int a,int b){
        System.out.println("这是我们自己写的.....");
        System.out.println("a是b的第一个参数");
        return 0;
    }
}

可变参数:在方法定义的时候, 指明该方法某个数据类型可以传入若干个;

注意:
        java中方法的可变参数只能定义在最后一个, 一个方法只能有一个可变参数.

方法导入多个相同数据类型:fun(int... ints)   ,可以写很多int变量,并将将多个int变量放在数组ints里,但是这是一种程序,如果还有其他类型变量,该int只能放在后面,比如fun1(String,int... ints)

实例如下:

public class CanShuDemo1 {
    public static void main(String[] args) {
        //需求1: 定义一个方法,求两个int类型元素的和
        System.out.println(sum(10, 20));

        //需求2: 定义一个方法,求三个int类型元素的和
        System.out.println(sum(10, 20, 30));

        //需求3: 定义一个方法,求四个int类型元素的和
        System.out.println(sum(10, 20, 30, 40));

        //需求4: 定义一个方法,求五个int类型元素的和
        System.out.println(sum(10, 20, 30, 40, 50));

        //需求5: 现在有一个姓名字符串和若干个分数,求该学生的总分
        fun1("魏一民", 98, 90, 10);

//        fun2(98, 90, 10, "诸葛亮");

    }

//    public static void fun1(int... scores,String name) {
//        int sum = 0;
//        for (int i : scores) {
//            sum += i;
//        }
//        System.out.println(name + "的考试总分为: " + sum);
//    }

    public static void fun1(String name, int... scores) {
        int sum = 0;
        for (int i : scores) {
            sum += i;
        }
        System.out.println(name + "的考试总分为: " + sum);
    }


    public static int sum(int... ints) {
        //int...表示方法调用时可以传入若干个int类型的元素
        //ints是用来可变参数的
        //可变参数传入的值被封装到一个数组中了, 这个数组的名字就是参数名
        int sum = 0;
        for (int i : ints) {
            sum += i;
        }
        return sum;
    }

//    public static int sum(int a, int b, int c, int d) {
//        return a + b + c + d;
//    }
//
//    public static int sum(int a, int b, int c) {
//        return a + b + c;
//    }
//
//    public static int sum(int a, int b) {
//        return a + b;
//    }
}

加强for循环,格式:for((元素的类型 变量名 : Collection集合|数组){System.out.println(变量名)}

例如:for(int i:list/arry){System.out.println( i )}

数组转集合ArrayList list=Array.asList(数组名/数组内容)    

示例:

import java.util.Arrays;
import java.util.List;
public class ArraysDemo {
    public static void main(String[] args) {
//        String[] arr = {"java","hello","hadoop","java","spark"};
        List<String> list1 = Arrays.asList("java","hello","hadoop","java","spark"); // 返回将若干个元素封装成一个ArrayList集合
        for (String s : list1) {
            System.out.println(s);
        }
    }
}

集合转数组:Object [ ]o=集合名.toArray()

String类型转StringBuffer互转

                                                   String s=new String (StringBuffer的对象)

                                                    StringBuffer s=new StringBuffer (String的对象)

将其他类型转成字符串:用toString

将字符串转成其他类型:

转int类型:Integer.praseInt(String s)

转double类型:Double.prasedouble(String s)

转float类型:Float.prasefloat(String s)

用Character类:可判断是否有空格(isSpaceChar)或者字符(isLetter)和数字(isDigit)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我的K8409

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值