在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-tw/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

發表回復

登錄後才能評論