文章目录
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保证操作时是原子操作