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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章