java实用类、方法记录--持续更新

java实用类、方法记录–持续更新

  • StringJoiner(字符串拼接)

    1. 当需要使用某些符号拼接多个数据时

      StringJoiner stringJoiner = new StringJoiner(",");
      stringJoiner.add("1");
      stringJoiner.add("2");
      stringJoiner.add("3");
      

      1,2,3

    2. 增加前后缀

      StringJoiner stringJoiner = new StringJoiner(",", "(", ")");
      stringJoiner.add("1");
      stringJoiner.add("2");
      stringJoiner.add("3");
      System.out.println(stringJoiner.toString());
      

      (1,2,3)

      StringJoiner stringJoiner = new StringJoiner("','", "('", "')");
      stringJoiner.add("1");
      stringJoiner.add("2");
      stringJoiner.add("3");
      System.out.println(stringJoiner.toString());
      

      (‘1’,‘2’,‘3’)


  • StringTokenizer(字符串拆分)

    1. 与StringJoiner相反,用于拆分字符串,默认拆分字符是(空格 \t\n\r\f)

      String str = "1231\t1\n3\f45 a";
      StringTokenizer stringTokenizer = new StringTokenizer(str);
      while (stringTokenizer.hasMoreTokens()) {
          System.out.println(stringTokenizer.nextToken());
      }
      

      1231
      1
      3
      45
      a

    2. 可以指定拆分字符

      String str = "1231 1,3,45 a";
      StringTokenizer stringTokenizer = new StringTokenizer(str, " ,");
      while (stringTokenizer.hasMoreTokens()) {
          System.out.println(stringTokenizer.nextToken());
      }
      

      1231
      1
      3
      45
      a

    3. 可以设置把拆分的字符也输出

      String str = "12311,3,45a";
      StringTokenizer stringTokenizer = new StringTokenizer(str, ",", true);
      while (stringTokenizer.hasMoreTokens()) {
          System.out.println(stringTokenizer.nextToken());
      }
      

      1231
      1
      ,
      3
      ,
      45
      a

    4. 修改拆分的字符

      String str = "1231:1,3,45:a";
      StringTokenizer stringTokenizer = new StringTokenizer(str, ",");
      while (stringTokenizer.hasMoreTokens()) {
          String next = stringTokenizer.nextToken();
          System.out.println(next);
          if (next.equals("3")) {
              stringTokenizer.nextToken(":");
          }
      }
      

      1231:1
      3
      a

    5. 获取数量

      String str = "1231:1,3,45:a";
      StringTokenizer stringTokenizer = new StringTokenizer(str, ",");
      System.out.println(stringTokenizer.countTokens());
      

      3


  • CountDownLatch(同步器)

    1. new CountDownLatch(2)定义数量,countDownLatch.countDown()减少数量,countDownLatch.await();等待数量为0时执行,否则一直堵塞,可设置最长堵塞时间

      public class Test{
      
          private static CountDownLatch countDownLatch = new CountDownLatch(2);
      
          public static void main(String[] args) throws Exception{
              new Thread(Test::runIncrement).start();
              new Thread(Test::runDecrement).start();
              countDownLatch.await();
              System.out.println("main");
          }
      
          private static void runIncrement() {
              sleep();
              System.out.println("runIncrement");
              countDownLatch.countDown();
          }
      
          private static void runDecrement() {
              sleep();
              System.out.println("runDecrement");
              countDownLatch.countDown();
          }
      
          private static void sleep() {
              try {
                  Thread.sleep(100);
              } catch (InterruptedException e) {
                  e.printStackTrace();
              }
          }
      }
      

      runDecrement
      runIncrement
      main

      runIncrement
      runDecrement
      main


  • AtomicInteger(原子类)

    1. AtomicInteger保证操作时是原子操作

      举一反三,atomic系列的还有
      在这里插入图片描述

      public class Test{
      
          private static AtomicInteger atomicInteger = new AtomicInteger(2);
          private static Integer integer = 2;
          private static CountDownLatch countDownLatch = new CountDownLatch(2);
      
          public static void main(String[] args) throws Exception{
              new Thread(Test::runIncrement).start();
              new Thread(Test::runDecrement).start();
              countDownLatch.await();
              System.out.println(integer);
              System.out.println(atomicInteger.get());
          }
      
          private static void runIncrement() {
              for (int i = 0; i < 100000; i++) {
                  integer += 1;
                  atomicInteger.getAndIncrement();
              }
              countDownLatch.countDown();
          }
      
          private static void runDecrement() {
              for (int i = 0; i < 100000; i++) {
                  integer -= 1;
                  atomicInteger.getAndDecrement();
              }
              countDownLatch.countDown();
          }
      }
      

      42713(不定值)
      2

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值