Detailed code explanation of Java8 StringJoiner
Finally, Java 8 released the StringJoiner class under the java.util package. I don't think this is a radically different implementation than our old-school approach of using StringBuffer/StringBuilder to concatenate strings. Let's take a look at the usage of StringJoiner and its internal implementation. For example, I have two strings called "Smart" and "Techie", and I want to concatenate these strings into [Smart, Techie]. In this case, my prefix is "[", suffix is "]", and delimiter is ",". StringJoiner has the following two
constructors. StringJoiner(CharSequence delimiter)
StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
StringJoiner sjr = new StringJoiner(",", "[", "]"); sjr.add("Smart").add("Techie"); System.out.println("The final Joined string is " + sjr);
If we don’t want to have prefix and suffix, then just:
sjr1.add("Smart").add("Techie"); System.out.println("The final Joined string is " + sjr1);
Now, we will see the implementation of add and toString() methods.
public StringJoiner add(CharSequence newElement) { prepareBuilder().append(newElement); return this; }
prepareBuilder() is implemented as follows.
private StringBuilder prepareBuilder() { if (value != null) { value.append(delimiter); } else { value = new StringBuilder().append(prefix); } return value; }
From the above implementation, it is obvious that StringJoiner follows the old-fashioned approach.
toString() is implemented as follows.
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; } }
The above is the detailed content of Detailed code explanation of Java8 StringJoiner. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Java8 calculates the date one year ago or one year later using the minus() method to calculate the date one year ago packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo09{publicstaticvoidmain(String[]args ){LocalDatetoday=LocalDate.now();LocalDatepreviousYear=today.minus(1,ChronoUni

How to calculate the date one week later in Java8 This example will calculate the date one week later. The LocalDate date does not contain time information. Its plus() method is used to add days, weeks, and months. The ChronoUnit class declares these time units. Since LocalDate is also an immutable type, you must use variables to assign values after returning. packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.temporal.ChronoUnit;publicclassDemo08{publicstaticvoidmain(String[

Java8's Clock class Java8 adds a Clock class for obtaining the current timestamp, or date and time information in the current time zone. Where System.currentTimeInMillis() and TimeZone.getDefault() were used before, they can be replaced by Clock. packagecom.shxt.demo02;importjava.time.Clock;publicclassDemo10{publicstaticvoidmain(String[]args){//Returnsthecurrenttimebase

Get the current timestamp in Java8. The Instant class has a static factory method now() that returns the current timestamp, as shown below: packagecom.shxt.demo02;importjava.time.Instant;publicclassDemo16{publicstaticvoidmain(String[]args) {Instanttimestamp=Instant.now();System.out.println("Whatisvalueofthisinstant"+timestamp.t

How to use predefined formatting tools to parse or format dates in Java8 packagecom.shxt.demo02;importjava.time.LocalDate;importjava.time.format.DateTimeFormatter;publicclassDemo17{publicstaticvoidmain(String[]args){StringdayAfterTommorrow="20180205 ";LocalDateformatted=LocalDate.parse

Determine whether two dates are equal in Java8 packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo04{publicstaticvoidmain(String[]args){LocalDatedate1=LocalDate.now();LocalDatedate2=LocalDate.of(2018,2,5) ;if(date1.equals(date2)){System.out.println("Times are equal");}e

Get year, month and day information in Java8 packagecom.shxt.demo02;importjava.time.LocalDate;publicclassDemo02{publicstaticvoidmain(String[]args){LocalDatetoday=LocalDate.now();intyear=today.getYear();intmonth=today .getMonthValue();intday=today.getDayOfMonth();System.out.println

Handling time zones in Java 8 Java 8 not only separates date and time, but also separates time zones. There are now a series of separate classes such as ZoneId to handle specific time zones and ZoneDateTime to represent time in a certain time zone. This was done by the GregorianCalendar class before Java8. The following example shows how to convert the time in this time zone to the time in another time zone. packagecom.shxt.demo02;importjava.time.LocalDateTime;importjava.time.ZoneId;importjava.time.ZonedDateT
