色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

null字符串對象串聯的各種方法

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-09 16:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Java 提供了多種方法和類可以用來拼接字符串。但是如果我們不注意 null 對象,則生成的 String 可能包含一些不需要的值。

問題場景

假設我們要拼接的 String 數組的元素,其中任何元素都可能為 null。

舉個例子

String[] values = { "Java ", null, "", "is ", "great!" };
String result = "";

for (String value : values) {
 result = result + value;
}

我們簡單地使用 + 運算符執行拼接,得出來的結果是

Java nullis great!

但是,我們正常情況肯定是不喜歡在結果中包含 "null" 值。

同樣,如果我們的應用程序在 Java 8 或更高版本上運行,我們使用 String.join() 靜態方法獲得相同的輸出:

String result = String.join("", values);

我們也不能避免在使用 String.join() 方法時連接 null 元素。

讓我們看看一些方法來避免這些空元素被串聯起來,并獲得我們期望的結果:"Java is great"

使用 + 運算符

加法 (+) 運算符被重載以連接 Java 中的字符串。在使用 + 運算符進行連接時,我們可以檢查 String 是否為 null,并將 null 字符串替換為空 ("")字符串:

for (String value : values) {
 result = result + (value == null ? "" : value);
}

assertEquals("Java is great!", result);

或者,我們可以將檢查空字符串的代碼提取到一個 getNonNullString() 方法中,該方法接受一個String對象并返回一個非空字符串對象:

public String getNonNullString(value) {
    return value == null ? "" : value;
}

for (String value : values) {
 result = result + getNonNullString(value);
}

但是 String 對象在Java中是不可變的。這意味著每次我們使用 + 運算符連接 String 對象時,都會在內存中創建一個新的 String。因此使用 + 運算符進行拼接是比較浪費資源的。

使用String.concat() 方法

當我們想要拼接 String 對象時,String.concat() 方法是一個不錯的選擇。

在這里,我們可以使用我們的 getNonNullString() 方法,該方法檢查空對象并返回空字符串:

for (String value : values) {
    result = result.concat(getNonNullString(value));
}

getNonNullString()方法返回的空字符串與結果串聯,從而忽略null對象。

使用StringBuilder類

StringBuilder 提供了一堆有用且方便的字符串構建方法。其中之一是 append() 方法。

在這里,我們可以使用相同的 getNonNullString() 方法來避免在使用 append() 方法時出現空對象:

for (String value : values) {
    result = result.append(getNonNullString(value));
}

使用StringJoiner類 (Java 8+)

StringJoiner 類提供了 String.join() 的所有功能,以及一個以給定前綴開頭并以給定后綴結尾的選項。我們可以使用它的 add()方法來連接字符串s。

和以前一樣,我們可以使用我們的幫助器方法 getNonNullString() 來避免空字符串值被串聯起來:

StringJoiner result = new StringJoiner("");

for (String value : values) {
    result = result.add(getNonNullString(value));
}

String.join() 和 StringJoiner 之間的一個區別是,與 String.join() 不同,我們必須遍歷集合(Array、List等)來聯接所有元素。

使用Streams.filter (Java 8+)

Stream API 提供大量順序和并行聚合操作。一個這樣的中間流操作是過濾器,它接受一個謂詞作為輸入,并根據給定的謂詞將流轉換為另一個流。

因此,我們可以定義一個謂詞,該謂詞將檢查字符串的空值,并將此謂詞傳遞給filter()方法。因此,篩選器將從原始流中篩選出這些空值。

最后,我們可以使用Collectors.joining()連接所有這些非空字符串值,最后將生成的Stream收集到String變量中:

result = Stream.of(values).filter(value - > null != value).collect(Collectors.joining(""));

總結

在本文中,我們演示了避免 null 字符串對象串聯的各種方法。總會有不止一種正確的方法來滿足我們的要求。因此,我們必須確定哪種方法最適合給定的地方。

我們必須記住,連接String本身可能是一個昂貴的操作,特別是在循環中。因此,始終建議考慮 Java 字符串 API 的性能。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    20

    文章

    2989

    瀏覽量

    109494
  • 字符串
    +關注

    關注

    1

    文章

    590

    瀏覽量

    22217
  • null
    +關注

    關注

    0

    文章

    19

    瀏覽量

    4126
  • string
    +關注

    關注

    0

    文章

    40

    瀏覽量

    4909
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Python字符串的特點和修改字符串的常見四種方法

    Python中修改字符串的幾種方法
    發表于 02-26 16:52

    請問JavaScript字符串對象String是什么?

    字符串對象 String 提供了對字符串進行處理的屬性和方法
    發表于 11-05 06:39

    python字符串拼接方式了解

    ()方法拼接 用string模塊中的Template對象 例子: fruit1 = ‘apples’ fruit2 = ‘bananas’ fruit3 = ‘pears’ 要求: 輸出字符串
    發表于 12-06 10:09 ?1106次閱讀

    實踐得出Labview字符串分離的四種方法

    1.??? 第一種方法名稱:掐頭去尾去脖子使用范圍:適用于任何情況流程:步驟一:“拉力1:100g. 拉力2:2000g. 拉力3:30g” “搜索/拆分字符串”(“搜索匹配字符串/字符
    發表于 07-04 16:54 ?1.3w次閱讀
    實踐得出Labview<b class='flag-5'>字符串</b>分離的四<b class='flag-5'>種方法</b>

    什么是復制字符串?Python如何復制字符串

    。 在上一篇文章《你真的知道Python的字符串怎么用嗎?》里,我突發奇想,將字符串跟列表做了比較,然后發現字符串竟然沒有復制的方法。當時沒有細想,只說要擱置疑問。過后,有好學的小伙伴
    發表于 11-25 10:32 ?3203次閱讀

    字符串string對象操作的全面總結

    ? ? 字符串操作看似簡單,其實非常重要,不注意的話,經常出現代碼運行結果和自己想要的不一致,甚至崩潰。本文總結了一些構建string對象方法、修改string對象
    的頭像 發表于 11-11 11:23 ?2186次閱讀
    <b class='flag-5'>字符串</b>string<b class='flag-5'>對象</b>操作的全面總結

    python對齊字符串的兩種方法

    當你不指定 < 、>、^ 時,對字符串,默認左對齊;對數值,默認右對齊
    的頭像 發表于 04-12 15:27 ?3622次閱讀

    平化字符串處理方法簡介

    這里介紹一組有用的字符串處理方法,即平化至字符串和從字符串還原。
    的頭像 發表于 09-26 10:20 ?2651次閱讀

    python字符串有哪些特定方法

    python字符串序列操作也適用于列表和元組。 python字符串還有獨有方法,即字符串對象的函數,其他
    的頭像 發表于 02-23 15:02 ?958次閱讀

    C語言定義字符串的幾種方法

    C語言中定義字符串有哪些方法
    的頭像 發表于 03-31 09:41 ?3970次閱讀

    Python中檢查字符串包含的方法

    Python 有多種處理字符串方法。今天我們介紹如何檢查一個字符串中是否包含另一個字符串
    的頭像 發表于 05-14 16:02 ?1.7w次閱讀

    代碼字符串分割方法

    的 String#split 來分割。 使用 String#split 方法 String 類中 split 方法,是我們平常處理字符串分割最常用的方法之一,它可以根據給定的分隔符或正
    的頭像 發表于 09-25 11:42 ?1241次閱讀

    如何去掉oracle字符型數據里的null

    等同于空字符串,空字符串是一個有效的值,而NULL值表示未知或不適用的值。在處理數據時,我們有時需要將NULL值替換為其他的值或者將其忽略。 下面是去掉Oracle
    的頭像 發表于 12-06 09:46 ?1986次閱讀

    C語言字符串編譯函數介紹

    在C語言中,字符串實際上是使用null字符O'終止的一維字符數組。因此,一個以null結尾的
    的頭像 發表于 03-07 16:18 ?728次閱讀
    C語言<b class='flag-5'>字符串</b>編譯函數介紹

    labview字符串如何轉換為16進制字符串

    在LabVIEW中,將字符串轉換為16進制字符串是一個常見的需求,尤其是在處理數據通信和硬件接口時。LabVIEW提供了多種方法來實現這一轉換,包括使用內置函數、編寫VI(Virtual
    的頭像 發表于 09-04 15:54 ?5241次閱讀
    主站蜘蛛池模板: 99在线在线视频观看 | 久久九九有精品国产23百花影院 | 寂寞夜晚在线视频观看 | 国产精品第一综合首页 | 国产精品资源在线观看网站 | 福利视频一二三在线观看 | 97在线免费观看 | 亚州性夜夜射在线观看 | FREECHINESE东北群交 | 欧美一道本一区二区三区 | 国产亚洲精品久久无亚洲 | 97久久超碰中文字幕 | 性美国人xxxxx18 | 我与旗袍老师疯狂床震 | 97人妻在线公开视频在线观看 | 一区二区三区福利视频 | 高清大胆欧美videossexo | 麻豆沈芯语| 性xxx免费 | 国产97精品久久久天天A片 | 亚洲免费视频在线观看 | 国产高清视频在线播放www色 | 亚洲刺激视频 | 小舞被爆操 | 欧美在线视频一区 | 天天澡夜夜澡人人澡 | 2021国产精品视频一区 | 亚洲国产亚综合在线区尤物 | 精品国产成人AV在线看 | 在线高清视频不卡无码 | 网友自拍区视频精品 | 国产亚洲日韩另类在线播放 | 国产在线一区二区AV视频 | 精品一品国产午夜福利视频 | 日久精品不卡一区二区 | 性xxx欧美| 色久悠悠无码偷拍自怕 | 92精品国产成人观看免费 | 啪啪漫画无遮挡全彩h网站 啪啪漫画无遮挡全彩h同人 | 日本久久久WWW成人免费毛片丨 | 久久国产欧美日韩精品免费 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品