欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java如何優(yōu)雅實(shí)現(xiàn)數(shù)組切片和拼接操作

 更新時(shí)間:2024年04月27日 10:13:58   作者:ding_haitao  
在做一道算法題的時(shí)候用到數(shù)組合并,并且有性能要求,這里對Java數(shù)組合并進(jìn)行總結(jié),下面這篇文章主要給大家介紹了關(guān)于Java如何優(yōu)雅實(shí)現(xiàn)數(shù)組切片和拼接操作的相關(guān)資料,需要的朋友可以參考下

一、字符串切片再拼接

某次的業(yè)務(wù)開發(fā)中,需要對字符串進(jìn)行分割(split)并提取其中的某些部分以進(jìn)行組合。然而,我在Java標(biāo)準(zhǔn)庫中并沒有找到一步到位的API來直接支持這種操作。希望在未來的幾年里,Java能夠在這方面優(yōu)化其數(shù)組操作的API,使得此類常見操作更加便捷。

List<String> linesList = Arrays.stream(content.split("\n")).collect(Collectors.toList());

String line = String.join("", linesList.subList(index1, index2));

二、集合切片再拼接

Java對于數(shù)組的切片操作,沒有直接提供類似于 JavaScript 中 slice() 方法那樣便捷的功能,只能利用 Arrays.copyOfRange() 方法來實(shí)現(xiàn)數(shù)組的切片。

		int[] originalArray = {1, 2, 3, 4, 5, 6};
        int start = 1; // 起始索引(包含)
        int end = 4;   // 結(jié)束索引(不包含)

        // 使用 Arrays.copyOfRange() 進(jìn)行切片
        int[] slicedArray = Arrays.copyOfRange(originalArray, start, end);

        // slicedArray 現(xiàn)在等于 {2, 3, 4}
        System.out.println(Arrays.toString(slicedArray));

再使用 Stream API 進(jìn)行拼接

		Integer[] array1 = {1, 2, 3, 4, 5};
        Integer[] array2 = {6, 7, 8, 9, 10};

        // 定義切片范圍
        int start1 = 1;
        int end1 = 3;
        int start2 = 2;
        int end2 = 4;

        // 對數(shù)組進(jìn)行切片
        Integer[] slice1 = Arrays.copyOfRange(array1, start1, end1);
        Integer[] slice2 = Arrays.copyOfRange(array2, start2, end2);

        // 使用 Stream API 進(jìn)行拼接
        Object[] array = Stream.concat(Arrays.stream(slice1), Arrays.stream(slice2))
                .toArray();

        // result 現(xiàn)在等于 {2, 3, 8, 9}
        Arrays.stream(array).forEach(System.out::println);

Stream.concat() 方法會一次性加載所有元素到內(nèi)存中,因此如果要拼接的數(shù)組非常大,可能會有性能和內(nèi)存消耗方面的考量。在處理大規(guī)模數(shù)據(jù)時(shí),可能需要考慮其他更高效的數(shù)據(jù)結(jié)構(gòu)或處理方式。

附:Java8中的字符串轉(zhuǎn)數(shù)組再通過指定符號拼接

1.字符串轉(zhuǎn)換字符串?dāng)?shù)組

String[] nameArr = StringUtils.tokenizeToStringArray(nameAttr, MULTI_VALUE_ATTRIBUTE_DELIMITERS);  // nameAttr="made,in;china,;qqq,.aaa" ,MULTI_VALUE_ATTRIBUTE_DELIMITERS=",;."

將字符串按照指定的字符轉(zhuǎn)換成String[]數(shù)組,如字符串中不包含指定字符,則將整個(gè)字符串放進(jìn)數(shù)組。如指定字符有多個(gè),是分別按所有可能出現(xiàn)的字符來切割的。 字符串: "made,in;china,;qqq,.aaa"     指定字符: ",;."       返回?cái)?shù)組:[made, in, china, qqq, aaa]

/**
 * Tokenize the given {@code String} into a {@code String} array via a
 * {@link StringTokenizer}.
 * <p>Trims tokens and omits empty tokens.
 * <p>The given {@code delimiters} string can consist of any number of
 * delimiter characters. Each of those characters can be used to separate
 * tokens. A delimiter is always a single character; for multi-character
 * delimiters, consider using {@link #delimitedListToStringArray}.
 * @param str the {@code String} to tokenize (potentially {@code null} or empty)
 * @param delimiters the delimiter characters, assembled as a {@code String}
 * (each of the characters is individually considered as a delimiter)
 * @return an array of the tokens
 * @see java.util.StringTokenizer
 * @see String#trim()
 * @see #delimitedListToStringArray
 */
public static String[] tokenizeToStringArray(@Nullable String str, String delimiters) {
    return tokenizeToStringArray(str, delimiters, true, true);
}

 2.字符串?dāng)?shù)組通過某符號連接

Collectors.joining 收集器 支持靈活的參數(shù)配置,可以指定字符串連接時(shí)的 分隔符,前綴 和 后綴 字符串

Stream<String> stream = Arrays.stream(nameArr);
String result = stream.collect(Collectors.joining("/", "[", "]"));
System.out.println(result);
// 輸出字符串 [made/in/china]

總結(jié) 

到此這篇關(guān)于Java如何優(yōu)雅實(shí)現(xiàn)數(shù)組切片和拼接操作的文章就介紹到這了,更多相關(guān)Java數(shù)組切片和拼接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 操作Properties配置文件詳解

    Java 操作Properties配置文件詳解

    本篇文章主要介紹了Java 操作Properties配置文件詳解,詳細(xì)的介紹了Properties和主要方法,有興趣的可以了解下
    2017-05-05
  • springboot的調(diào)度服務(wù)與異步服務(wù)使用詳解

    springboot的調(diào)度服務(wù)與異步服務(wù)使用詳解

    本文主要介紹了Java的ScheduledExecutorService接口和Spring Boot中如何使用調(diào)度線程池,包括核心參數(shù)、創(chuàng)建方式、自定義線程池、Cron表達(dá)式,以及如何在Spring Boot中配置和使用異步任務(wù),此外,還討論了如何模擬系統(tǒng)繁忙和調(diào)整異步線程池的拒絕策略
    2025-02-02
  • Java中數(shù)據(jù)庫常用的兩把鎖之樂觀鎖和悲觀鎖

    Java中數(shù)據(jù)庫常用的兩把鎖之樂觀鎖和悲觀鎖

    這篇文章主要介紹了數(shù)據(jù)庫常用的兩把鎖之樂觀鎖和悲觀鎖,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問題

    基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問題

    這篇文章主要介紹了基于Spring框架由ConditionalOnMissingBean注解引發(fā)的問題,具有很好
    2023-11-11
  • 硬核 Redis 高頻面試題解析

    硬核 Redis 高頻面試題解析

    Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫。在部分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端使用很方便
    2021-06-06
  • springboot?max-http-header-size最大長度的那些事及JVM調(diào)優(yōu)方式

    springboot?max-http-header-size最大長度的那些事及JVM調(diào)優(yōu)方式

    這篇文章主要介紹了springboot?max-http-header-size最大長度的那些事及JVM調(diào)優(yōu)方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Java 集合的Contains和Remove方法

    Java 集合的Contains和Remove方法

    這篇文章主要介紹了Java 集合Contains和Remove方法的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-02-02
  • sprinboot項(xiàng)目啟動一半到圖形化界面卡住了的解決

    sprinboot項(xiàng)目啟動一半到圖形化界面卡住了的解決

    這篇文章主要介紹了sprinboot項(xiàng)目啟動一半到圖形化界面卡住了的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • JAVA中三種常用的循環(huán)語句詳解

    JAVA中三種常用的循環(huán)語句詳解

    這篇文章主要介紹了JAVA中三種常用的循環(huán)語句詳解,包括格式和執(zhí)行流程,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Java實(shí)現(xiàn)批量下載文件的示例代碼

    Java實(shí)現(xiàn)批量下載文件的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)批量下載文件,并以壓縮輸出流的形式返回前端,文中的示例代碼講解詳細(xì),需要的小伙伴可以參考一下
    2023-10-10

最新評論