日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

string index out of range_Java 12 骚操作, String居然还能这样玩!

發布時間:2023/12/3 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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居然还能这样玩!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。