string index out of range_Java 12 骚操作, String居然还能这样玩!
生活随笔
收集整理的這篇文章主要介紹了
string index out of range_Java 12 骚操作, String居然还能这样玩!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
坐穩了,準備起飛!
1、transform
transform:即字符串轉換,來看下 transform 的實現源碼:
public <R> R transform(Function<? super String, ? extends R> f) {return f.apply(this); }傳入一個函數式接口 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); }結果輸出:
======test java 12 transform====== Hi,JAVA Hi,PYTHON Hi,C++示例是對一個字符串連續轉換了三遍,代碼很簡單,大家都能領會的。
2、indent
直接看示例吧:
private static void testIndent() {System.out.println("======test java 12 indent======");String result = "Javan PythonnC++".indent(3);System.out.println(result); }結果輸出:
======test java 12 indent======JavaPythonC++換行符 n 后前縮進 N 個空格,為 0 或負數不縮進。
以下是 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")); }其實就是調用了 lines() 方法來創建一個 Stream,然后再往前拼接指定數量的空格。
3、describeConstable
private static void testDescribeConstable() {System.out.println("======test java 12 describeConstable======");String name = "Java技術棧";Optional<String> optional = name.describeConstable();System.out.println(optional.get()); }結果輸出:
======test java 12 describeConstable====== Java技術棧Java 12, String 實現了 Constable 接口:
java.lang.constant.Constable這個接口就有一個方法,源碼如下:
public interface Constable {Optional<? extends ConstantDesc> describeConstable();}Java 12 String 的實現源碼:
@Override public Optional<String> describeConstable() {return Optional.of(this); }很簡單,其實就是調用 Optional.of 方法返回一個 Optional 類型,Optional不懂的可以參考這篇文章:Java 8 新特性之 Optional。
好了,今天的分享就到這,收藏轉發一下吧,多學習了解,日后必定有用!
關注Java技術棧,分享更多主流的Java技術~
總結
以上是生活随笔為你收集整理的string index out of range_Java 12 骚操作, String居然还能这样玩!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 股票年报前会停盘吗?
- 下一篇: java comparator_【面试题