java8_杂项改进

标签: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,....)
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容