文章目錄
java實用類、方法記錄–持續更新
-
StringJoiner(字符串拼接)
-
當需要使用某些符號拼接多個數據時
StringJoiner stringJoiner = new StringJoiner(","); stringJoiner.add("1"); stringJoiner.add("2"); stringJoiner.add("3");
1,2,3
-
增加前後綴
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(字符串拆分)
-
與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 -
可以指定拆分字符
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 -
可以設置把拆分的字符也輸出
String str = "12311,3,45a"; StringTokenizer stringTokenizer = new StringTokenizer(str, ",", true); while (stringTokenizer.hasMoreTokens()) { System.out.println(stringTokenizer.nextToken()); }
1231
1
,
3
,
45
a -
修改拆分的字符
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 -
獲取數量
String str = "1231:1,3,45:a"; StringTokenizer stringTokenizer = new StringTokenizer(str, ","); System.out.println(stringTokenizer.countTokens());
3
-
-
CountDownLatch(同步器)
-
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(原子類)
- 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
- AtomicInteger保證操作時是原子操作