Rumah Java javaTutorial Java8 StringJoiner的代码详解

Java8 StringJoiner的代码详解

Mar 24, 2017 am 11:02 AM

终于,Java 8在java.util软件包下发布了StringJoiner类。我认为相对于我们使用StringBuffer / StringBuilder的旧式做法来连接字符串,这并非是一个迥然不同的实现。我们一起来看一看StringJoiner的用法和它的内部实现。

例如,我有两个字符串为“Smart”和“Techie”,我想连接这些字符串为[Smart,Techie]。在这种情况下,我的前缀为“[”,后缀为“]”,以及分隔符为“,”。 StringJoiner有如下两个构造函数

StringJoiner(CharSequence delimiter)
Salin selepas log masuk
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
Salin selepas log masuk

我们想要有前缀和后缀,因此在例子中使用第二个构造函数。

StringJoiner sjr = new StringJoiner(",", "[", "]");
sjr.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr);
Salin selepas log masuk

如果我们不希望有前缀和后缀,那么就:

sjr1.add("Smart").add("Techie");
System.out.println("The final Joined string is " + sjr1);
Salin selepas log masuk

现在,我们将看到add和toString()方法的实现。

public StringJoiner add(CharSequence newElement) {
   prepareBuilder().append(newElement);
   return this;
}
Salin selepas log masuk

prepareBuilder()实现如下。

private StringBuilder prepareBuilder() {
    if (value != null) {
       value.append(delimiter);
    } else {
       value = new StringBuilder().append(prefix);
    }
    return value;
}
Salin selepas log masuk

从上面的实现中,可以很明显看到StringJoiner遵循老式的做法。

toString()实现如下。

public String toString() {
    if (value == null) {
      return emptyValue;
    } else {
    if (suffix.equals("")) {
      return value.toString();
    } else {
    int initialLength = value.length();
    String result = value.append(suffix).toString();
    // reset value to pre-append initialLength
    value.setLength(initialLength);
    return result;
    }
}
Salin selepas log masuk

Atas ialah kandungan terperinci Java8 StringJoiner的代码详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk mengira tarikh setahun yang lalu atau setahun kemudian di Java 8? Bagaimana untuk mengira tarikh setahun yang lalu atau setahun kemudian di Java 8? Apr 26, 2023 am 09:22 AM

Java8 mengira tarikh setahun yang lalu atau setahun kemudian menggunakan kaedah tolak() untuk mengira tarikh setahun yang lalu packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[ ]args ){LocalDatetoday=LocalDate.now();LocalDatepreviousYear=today.minus(1,ChronoUni

Bagaimana untuk mengira tarikh seminggu kemudian menggunakan Java 8? Bagaimana untuk mengira tarikh seminggu kemudian menggunakan Java 8? Apr 21, 2023 pm 11:01 PM

Cara mengira tarikh seminggu kemudian dalam Java8 Contoh ini akan mengira tarikh seminggu kemudian. Tarikh LocalDate tidak mengandungi maklumat masa kaedah tambah() digunakan untuk menambah hari, minggu dan bulan Kelas ChronoUnit mengisytiharkan unit masa ini. Memandangkan LocalDate juga merupakan jenis yang tidak boleh diubah, anda mesti menggunakan pembolehubah untuk menetapkan nilai selepas kembali. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

Bagaimana untuk menggunakan kelas Jam dalam Java8 Bagaimana untuk menggunakan kelas Jam dalam Java8 Apr 25, 2023 pm 03:37 PM

Kelas Jam Java8 Java8 menambah kelas Jam untuk mendapatkan cap waktu semasa, atau maklumat tarikh dan masa dalam zon waktu semasa. Apabila System.currentTimeInMillis() dan TimeZone.getDefault() digunakan sebelum ini, ia boleh digantikan dengan Jam. packagecom.shxt.demo02;importjava.time.Clock;publicclassDemo10{publicstaticvoidmain(String[]args){//Returnsthecurrenttimebase

Bagaimana untuk mendapatkan cap masa semasa dalam Java8 Bagaimana untuk mendapatkan cap masa semasa dalam Java8 May 01, 2023 am 11:46 AM

Dapatkan cap masa semasa dalam Java8. Kelas Instant mempunyai kaedah kilang statik now() yang akan mengembalikan cap masa semasa, seperti yang ditunjukkan di bawah: packagecom.shxt.demo02;importjava.time.Instant;publicclassDemo16{publicstaticvoidmain(String[]args) {Instanttimestamp=Instant.now();System.out.println("Whatisvalueofthisinstant"+timestamp.t

Cara menggunakan alat pemformatan yang telah ditetapkan untuk menghuraikan atau memformat tarikh dalam Java8 Cara menggunakan alat pemformatan yang telah ditetapkan untuk menghuraikan atau memformat tarikh dalam Java8 Apr 28, 2023 pm 07:40 PM

Cara menggunakan alat pemformatan yang dipratentukan untuk menghuraikan atau memformat tarikh dalam Java 8 packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassDemo17{publicstaticvoidmain(String[]args){StringdayAfterTommorrow="201 ";80200 LocalDateformatted=LocalDate.parse

Bagaimana untuk menentukan sama ada dua tarikh adalah sama dalam Java8 Bagaimana untuk menentukan sama ada dua tarikh adalah sama dalam Java8 May 02, 2023 am 08:46 AM

Tentukan sama ada dua tarikh adalah sama dalam Java8 packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo04{publicstaticvoidmain(String[]args){LocalDatedate1=LocalDate.now();LocalDatedate2=LocalDate.of(2018,2,5) ;jika(tarikh1.sama(tarikh2)){System.out.println("Masa sama");}e

Bagaimana untuk mendapatkan maklumat tahun, bulan dan hari dalam Java8 Bagaimana untuk mendapatkan maklumat tahun, bulan dan hari dalam Java8 Apr 19, 2023 am 09:49 AM

Java8中获取年、月、日信息packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo02{publicstaticvoidmain(String[]args){LocalDatetoday=LocalDate.now();intthyear=artoday. .getMonthValue();intday=today.getDayOfMonth();System.out.println

Bagaimana untuk menyemak tahun lompat di Java 8? Bagaimana untuk menyemak tahun lompat di Java 8? May 08, 2023 pm 11:16 PM

在Java8中检查闰年packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo14{publicstaticvoidmain(String[]args){LocalDatetoday=LocalDate.now();if(today.isLeapYelnsprint()){ "ThisyearisLeapyear");}lain{System.out.println("2

See all articles