string index out of range_Java 12 骚操作, String居然还能这样玩!
坐穩(wěn)了,準備起飛!
1、transform
transform:即字符串轉(zhuǎn)換,來看下 transform 的實現(xiàn)源碼:
public <R> R transform(Function<? super String, ? extends R> f) {return f.apply(this); }傳入一個函數(shù)式接口 Function,接受一個值,返回一個值。
廢話少說,直接上手就是干:
private static void testTransform() {System.out.println("======test java 12 transform======");List<String> list1 = List.of("Java", " Python", " C++ ");List<String> list2 = new ArrayList<>();list1.forEach(element ->list2.add(element.transform(String::strip).transform(String::toUpperCase).transform((e) -> "Hi," + e)));list2.forEach(System.out::println); }結(jié)果輸出:
======test java 12 transform====== Hi,JAVA Hi,PYTHON Hi,C++示例是對一個字符串連續(xù)轉(zhuǎn)換了三遍,代碼很簡單,大家都能領(lǐng)會的。
2、indent
直接看示例吧:
private static void testIndent() {System.out.println("======test java 12 indent======");String result = "Javan PythonnC++".indent(3);System.out.println(result); }結(jié)果輸出:
======test java 12 indent======JavaPythonC++換行符 n 后前縮進 N 個空格,為 0 或負數(shù)不縮進。
以下是 indent 的核心源碼:
private String indent(int n, boolean removeBlanks) {Stream<String> stream = removeBlanks ? lines(Integer.MAX_VALUE, Integer.MAX_VALUE): lines();if (n > 0) {final String spaces = " ".repeat(n);stream = stream.map(s -> spaces + s);} else if (n == Integer.MIN_VALUE) {stream = stream.map(s -> s.stripLeading());} else if (n < 0) {stream = stream.map(s -> s.substring(Math.min(-n, s.indexOfNonWhitespace())));}return stream.collect(Collectors.joining("n", "", "n")); }其實就是調(diào)用了 lines() 方法來創(chuàng)建一個 Stream,然后再往前拼接指定數(shù)量的空格。
3、describeConstable
private static void testDescribeConstable() {System.out.println("======test java 12 describeConstable======");String name = "Java技術(shù)棧";Optional<String> optional = name.describeConstable();System.out.println(optional.get()); }結(jié)果輸出:
======test java 12 describeConstable====== Java技術(shù)棧Java 12, String 實現(xiàn)了 Constable 接口:
java.lang.constant.Constable這個接口就有一個方法,源碼如下:
public interface Constable {Optional<? extends ConstantDesc> describeConstable();}Java 12 String 的實現(xiàn)源碼:
@Override public Optional<String> describeConstable() {return Optional.of(this); }很簡單,其實就是調(diào)用 Optional.of 方法返回一個 Optional 類型,Optional不懂的可以參考這篇文章:Java 8 新特性之 Optional。
好了,今天的分享就到這,收藏轉(zhuǎn)發(fā)一下吧,多學習了解,日后必定有用!
關(guān)注Java技術(shù)棧,分享更多主流的Java技術(shù)~
總結(jié)
以上是生活随笔為你收集整理的string index out of range_Java 12 骚操作, String居然还能这样玩!的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票年报前会停盘吗?
- 下一篇: 前端H5怎么切换语言_「自学系列一」HT