java 杂乱知识点

目录

1、array.length的<,<=,-1问题

2、字符串去除前面的不定数量的0或者其他相同字符

3、取文件路径并生成不重复后缀

4、String和Date互转,十二月英文转换

5、list取第一个实体

6、parallelstream foreach和for each

1、array.length的<,<=,-1问题

  String[] arrLine = {"1","2","3","4"};
        for(int i = 0;i<arrLine.length;i++){
            System.out.println(arrLine[i]);
//从数组的第一个元素开始,到数组的最后一个元素,遍历元素范围:arr[0]到arr[3],1,2,3,4
        }

        for(int i = 0;i<=arrLine.length;i++){
            System.out.println(arrLine[i]);
//会产生数组越界,数组元素下标到达不了4
        }

        for(int i = 0;i<arrLine.length-1;i++){
            System.out.println(arrLine[i]);
//从数组的第一个元素开始,到数组的到第二个元素,遍历元素范围:arr[0]到arr[2],1,2,3
        }

        for(int i = 0;i<=arrLine.length-1;i++){
            System.out.println(arrLine[i]);
//从数组的第一个元素开始,到数组的到最后一个元素,遍历元素范围:arr[0]到arr[3],1,2,3,4
        }

2、字符串去除前面的不定数量的0或者其他相同字符

        String str = "000001230";
        String str1 = "00249";
        String str2 = "***我di";
        String str3 = String.valueOf(Integer.valueOf(str1));
        System.out.println(str.replaceFirst("^0*",""));  //1230
        System.out.println(str3);   //249
        System.out.println(str2.replaceFirst("^\\**",""));  //我di  (*先用\\转义)

3、取文件路径并生成不重复后缀

        File oldFile = new File("F:\\采购单7500003219.pdf");
        File newExcel = new File(oldFile.toString().split("\\.pdf")[0] + "_" + System.currentTimeMillis() + ".xlsx");
        System.out.println(oldFile.getAbsolutePath().toLowerCase().split("\\.pdf")[0]);  //  f:\采购单7500003219
        System.out.println(oldFile.toString().split("\\.pdf")[0]);//  F:\采购单7500003219
        System.out.println(newExcel);  //  F:\采购单7500003219_1666949223006.xlsx
        System.out.println("System.currentTimeMillis()结果是:"+System.currentTimeMillis()+"\n"+"new Date()结果是"+new Date());
        //System.currentTimeMillis()结果是:1666949493869
        //new Date()结果是Fri Oct 28 17:31:33 CST 2022

4、String和Date互转,十二月英文转换

     DateFormat dtFmt = new SimpleDateFormat("yyMMdd");
        String dateStr = dtFmt.format(new Date());
        System.out.println(dateStr);//231108

 private Date getDateFromStr(String str) {
        String[] arr = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "Sep", "OCT", "NOV", "DEC"};
        String arrLine[]=str.split("/");
        String date=arrLine[0];
        for (int i = 0; i < arr.length; i++) {
            if (arrLine[1].equalsIgnoreCase(arr[i])) {
                int month = (i + 1);
                date+="/"+month+"/"+arrLine[2];

            }
        }
        return string2Date(date, "dd/MM/yy");
    }

 private Date getDateFromStr(String str) {
        String[] arr = {"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "Sep", "OCT", "NOV", "DEC"};
        String arrLine[]=str.split("/");
        String date=arrLine[0];
        for (int i = 0; i < arr.length; i++) {
            if (arrLine[1].equalsIgnoreCase(arr[i])) {
                int month = (i + 1);
                date+="/"+month+"/"+arrLine[2];

            }
        }
        return string2Date(date, "dd/MM/yy");
    }


    public static String date2String(Date date, String format) {
        if (date == null) {
            return "";
        } else {
            SimpleDateFormat sdf = null;

            try {
                sdf = new SimpleDateFormat(format);
            } catch (Exception var4) {
                sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                log.debug("====DateUtils.date2String(" + date + "," + format);
            }

            return sdf.format(date);
        }
    }

    public static Date string2Date(String date, String dateFormat) {
        if (ObjectUtils.isEmpty(date)) {
            return null;
        } else {
            try {
                SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
                long time = sdf.parse(date).getTime();
                return new Date(time);
            } catch (Exception var5) {
                log.error("unsupported date format : " + date);
                throw new RuntimeException("时间格式不正确:" + date + ",正确格式:" + dateFormat);
            }
        }
    }

5、list取第一个实体


//先判空
List.iterator().next();
list.get(0)
/**List.iterator().next()和List.get(0)在获取集合中的第一个元素上是等效的。它们都可以用于获取集合中的第一个元素。
List.get(0)使用了集合的get()方法,返回指定索引位置的元素。如果索引位置为0,就表示获取第一个元素。
而List.iterator().next()使用了迭代器的next()方法来获取迭代器指向的第一个元素。由于迭代器是用于遍历集合的,所以通过调用next()方法,可以获取第一个元素。
对于获取集合中的第一个元素,List.get(0)方法更加简洁和直观。它通过指定索引位置来直接获取第一个元素,代码可读性较高。
相比之下,List.iterator().next()方法需要先获取一个迭代器对象,然后调用next()方法来获取第一个元素。虽然两者在功能上是等效的,但是代码的可读性稍低于List.get(0)。
因此,如果你只需要获取集合中的第一个元素,建议使用List.get(0)方法。它更加简洁、直观和易于理解。如果你需要使用迭代器遍历整个集合,那么才需要使用iterator().next()方法。
因此,这两种方式在获取集合中第一个元素时是等效的,可以根据个人喜好和具体情况选择使用哪种方式。**/

6、parallelstream foreach和for each

//可以直接organizationVOList.foreach,也可以如下
organizationVOList.parallelStream().forEach(org -> {
   if (org.getEnabled() == true) {
   organizationMapper.update(null,
         Wrappers.lambdaUpdate(OrganizationDO.class)
        .set(OrganizationDO::getEnabled, false)
        .set(OrganizationDO::getModifierUuid, loginUser.getUuid())
        .set(OrganizationDO::getModifier, loginUser.getName())
        .set(OrganizationDO::getModifyTime, new Date())
        .eq(OrganizationDO::getOrgCode, o.getOrgCode()));
          }
        }
);
//forEach()方法是Stream接口的一个默认方法,用于对集合中的每个元素执行给定的操作。该方法是序列化的,即依次处理每个元素。
//parallelStream().forEach()方法也是Stream接口的方法,但是它启用了并行处理(多线程)来加快处理速度。它将集合分成多个部分,并使用多个线程同时处理每个部分中的元素。
//parallelStream().forEach()可能会导致冲突。forEach() 方法本身是无状态的操作,可以安全地并行处理集合中的元素。然而,在使用 parallelStream().forEach() 时,需要小心并发访问共享资源,因为 forEach() 的执行是并行的,多个线程可能同时访问共享资源。如果对共享资源进行修改或者有其他线程可能修改它,就可能导致冲突或者不确定的结果。
//需要注意的是,使用并行流进行操作可以提高处理速度,但不一定在所有情况下都比串行流(forEach)更快。并行操作可能增加了线程间的同步和调度开销,并且在某些情况下可能导致结果的无序性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值