在java中高效操作大型字符串,java字符串操作常用方法有哪些

本文目錄一覽:

JAVA編程對字符串操作

package myPrac;

public class StringTest {

    public static void main(String[] args){

        String str = “aaabbdddfffcccdf”; //初始字符串

        StringBuilder temp = new StringBuilder();    //存放連續相同字符

        StringBuilder result = new StringBuilder(); //存放轉化後的字符串

        char ch = ‘#’; //用來存放當前比較的字符

        for(int i = 0; i str.length();i++){

            if(ch == ‘#’){

                //第一次循環,第一個字符與#不同

                ch = str.charAt(i);

                temp.append(str.charAt(i));

            }else{

                //如果相同 繼續添加

                if(ch == str.charAt(i)){

                    temp.append(str.charAt(i));

                }else{

                    //不同進行處理

                    result.append(temp.length());    //相同字符數量

                    result.append(temp.charAt(0));    //字符

                    temp.delete(0, temp.length());    //temp重置

                    temp.append(str.charAt(i));        //當前字符放入ch

                    ch = str.charAt(i);

                }

            }

        }

        System.out.println(result.toString());

    }

}

Java中如何高效的拼接字符串

String類的方法:

①利用運算符”+”

②public String concat(String str)進行字符串的拼接操作

StringBuffer的方法:

①public StringBuffer append(String str)將str添加到當前字符串緩衝區的字符序列的末尾

②public StringBuffer insert(int offset,String str)在當前字符串緩衝區的字符序列的下標

索引offset插入str。如果offset等於舊長度,則str添加在字符串緩衝區的尾部

如圖所示

java 如何提高字符串拼接速度

應該使用

StringBuilder

為什麼不用

StringBuffer,因為StringBuffer的每一次操作之前都要取得同步鎖,每一次操作之後都要釋放同步鎖。

看下面這個例子:

for(int

i=0;

i10000;

i++)

buffer.append(i).append(“,

“);

這裡獲取了10000次鎖,釋放了10000次鎖,那麼,它真的實現了同步的目的嗎?如果在這個循環運行過程中,有另一個進程對buffer進行了這樣的操作:

buffer.append(“some

string”);

那麼這個”some

string”

會被插入到某兩個數字之間,如果你想要前面那個for循環不受干擾地完成,還是要在外面加鎖:

synchronized(buffer)

{

for(int

i=0;

i10000;

i++)

buffer.append(i).append(“,

“);

}

所以StringBuffer這個類的設計是有缺陷的,是由於當時受限於人們對API設計理論的理解,類的設計者不明白這樣一個道理:一個類不應該自己實現同步,而應該把同步的工作交給用戶,因為“用戶對於什麼時候應該同步,應該怎麼同步,通常比類的設計者知道得更清楚,並且在不同的環境下用戶可能對如何同步有不同的需求”。

所以在新的代碼中應該盡量用

StringBuilder

而不要用

StringBuffer。

同理,應該用

ArrayList

而不要用

Vector。

原創文章,作者:RBYI,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/135112.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RBYI的頭像RBYI
上一篇 2024-10-04 00:10
下一篇 2024-10-04 00:10

相關推薦

  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python棧操作用法介紹

    如果你是一位Python開發工程師,那麼你必須掌握Python中的棧操作。在Python中,棧是一個容器,提供後進先出(LIFO)的原則。這篇文章將通過多個方面詳細地闡述Pytho…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Python 常用數據庫有哪些?

    在Python編程中,數據庫是不可或缺的一部分。隨着互聯網應用的不斷擴大,處理海量數據已成為一種趨勢。Python有許多成熟的數據庫管理系統,接下來我們將從多個方面介紹Python…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • Python磁盤操作全方位解析

    本篇文章將從多個方面對Python磁盤操作進行詳細闡述,包括文件讀寫、文件夾創建、刪除、文件搜索與遍歷、文件重命名、移動、複製、文件權限修改等常用操作。 一、文件讀寫操作 文件讀寫…

    編程 2025-04-29
  • Python代碼實現迴文數最少操作次數

    本文將介紹如何使用Python解決一道經典的迴文數問題:給定一個數n,按照一定規則對它進行若干次操作,使得n成為迴文數,求最少的操作次數。 一、問題分析 首先,我們需要了解迴文數的…

    編程 2025-04-29

發表回復

登錄後才能評論