美文网首页
java8_杂项改进

java8_杂项改进

作者: 梓青 | 来源:发表于2016-11-11 19:30 被阅读42次

    标签:java

    杂项改进

    字符串

    //用分隔符组合字符串,String.join(",",String...);
    

    无符号数及Math方法

    //无符号数学计算(Byte,Short,Integer)->无符号int,long
    //有符号Byte:-128到127,无符号Byte:0到255
    Integer.toUnsignedLong(12);
    
    //处理无符号值
    //compareUnsigned(),devideUnsigned(),remainderUnsigned()
    // 无符号整数进行比较,除法,求余
    //+,-可以正确处理无符号整数,乘法需要转换为长整形相乘,调用toUnsignedLong()(因为可能会溢出)
    
    //Float,Double增加了isFinite()方法判断是否有限;
    //求除数和余数
    Math.floorMod(12,10);//余数 2
    Math.floorDiv(12,10);//除数 1
    

    比较器

    //3.比较器(利用接口可以拥有具体实现的方法default)
    
    static method comparing(FunctionT->U)接受一个键提取器函数,先映射后对结果排序
    thenComparing(Function) 多级比较
    //可以指定比较函数,先映射,后对结果应用排序
    
    
    //如果键提取函数可以返回null,
    使用nullsFirst(),nullsLast()改造比较器,将null看成大于或者小于正常值的值
    
    
    //static method comparing(FunctionT->U,Comparator.nullsFirst(比较函数))
    //颠倒比较器
    //static method reverseOrder(),recersed()
    

    文件使用

    /**
     * 文件使用
     */
    private void fileTest()throws FileNotFoundException,IOException{
        //读取文件行的流,每个String元素都为文件的一行
        Stream<String> lines= Files.lines(Paths.get("目录","文件名"));
        //按行读取其他输入
        Stream<String> lines_=new BufferedReader(
                new InputStreamReader(
                        new FileInputStream(new File("文件路径")))).lines();
    
        //遍历目录项的流,不会递归处理子目录
        try(Stream<Path> entryies=Files.list(Paths.get("目录"))){
            //java7 try-with-resource会自动处理文件关闭
        }
        //遍历目录项的流,可以递归处理(可以指定深度)
        try(Stream<Path> entryies=Files.walk(Paths.get("目录"))){
            //java7 try-with-resource会自动处理文件关闭
        }
        //遍历目录项的流,使用find()方法可以在遍历的时候进行过滤
    }
    

    Base64编码

    /**
     * Base64编码
     */
    private void base64Tst(){
        //编码
        Base64.getEncoder().encodeToString("字符串".getBytes());
        Base64.getUrlEncoder();
        Base64.getMimeEncoder();
        //解码
        Base64.getDecoder().decode("base64字符串");
    }
    

    注解

    /**
     * 1.可重复注解
     * 2.java8之前,注解用在声明上,现在可以用在类型上,如List<@注解 String>
     * 3.方法参数映射 Parameter可以读取被注解的方法参数的名称
     */
    

    NULL检查

    Objects,isNull(),nonNull()
    

    正则表达式捕获命名组

    (?<group1>//d+)(?<group2>a-z),可以在pattern.start(),end(),group()中使用组名group1,group2
    

    并行数组操作

    /**
     * 并行数组操作
     */
    private void parallelArrayOpration(){
        //并行排序(可以指定comparator)
        Arrays.parallelSort(array);
        //根据元素索引计算值
        Arrays.parallelSetAll(array,i->i%10);
        //将数组的每一个元素指定为关联操作的前缀的累积
        Arrays.parallelPrefix(array,(x,y)->x*y);
        //计算(1,1*2,1*2*3,....)
    }

    相关文章

      网友评论

          本文标题:java8_杂项改进

          本文链接:https://www.haomeiwen.com/subject/yqbfpttx.html