자바 8 StringJoiner

1. 소개

StringJoinerjava.util 패키지 아래에 Java 8에 추가 된 새로운 클래스 입니다.

간단히 말해, 구분 기호, 접두사 및 접미사를 사용 하여 문자열 을 결합하는 데 사용할 수 있습니다 .

2. 요소 추가

add () 메서드를 사용하여 문자열 을 추가 할 수 있습니다 .

@Test public void whenAddingElements_thenJoinedElements() { StringJoiner joiner = new StringJoiner(",", PREFIX, SUFFIX); joiner.add("Red") .add("Green") .add("Blue"); assertEquals(joiner.toString(), "[Red,Green,Blue]"); }

목록의 모든 요소를 ​​결합하려면 목록을 반복해야합니다. 불행히도 StringJoiner를 사용하는 쉬운 방법은 없습니다 .

@Test public void whenAddingListElements_thenJoinedListElements() { List rgbList = new ArrayList(); rgbList.add("Red"); rgbList.add("Green"); rgbList.add("Blue"); StringJoiner rgbJoiner = new StringJoiner( ",", PREFIX, SUFFIX); for (String color : rgbList) { rgbJoiner.add(color); } assertEquals(rgbJoiner.toString(), "[Red,Green,Blue]"); }

3. 건설

StringJoiner 의 인스턴스를 생성하려면 구분 기호를 언급해야합니다. 선택적으로 결과에 있어야하는 접두사와 접미사를 지정할 수도 있습니다.

private String PREFIX = "["; private String SUFFIX = "]"; @Test public void whenEmptyJoinerWithoutPrefixSuffix_thenEmptyString() { StringJoiner joiner = new StringJoiner(","); assertEquals(0, joiner.toString().length()); } @Test public void whenEmptyJoinerJoinerWithPrefixSuffix_thenPrefixSuffix() { StringJoiner joiner = new StringJoiner( ",", PREFIX, SUFFIX); assertEquals(joiner.toString(), PREFIX + SUFFIX); }

결합 자로부터 현재 값을 얻기 위해 toString () 을 사용 합니다.

결합자가 반환 한 기본값을 확인합니다. 소목 접두사와 접미사를 반환하지 않고 빈 문자열 목공과 접두사와 접미사를 반환하는 반면, 문자열이 모두 접두사와 접미사 포함.

setEmptyValue () 를 사용하여 반환 된 기본 문자열을 변경할 수 있습니다 .

@Test public void whenEmptyJoinerWithEmptyValue_thenDefaultValue() { StringJoiner joiner = new StringJoiner(","); joiner.setEmptyValue("default"); assertEquals(joiner.toString(), "default"); } @Test public void whenEmptyJoinerWithPrefixSuffixAndEmptyValue_thenDefaultValue() { StringJoiner joiner = new StringJoiner(",", PREFIX, SUFFIX); joiner.setEmptyValue("default"); assertEquals(joiner.toString(), "default"); }

여기서 두 결합자는 EMPTY_JOINER 상수를 반환합니다 .

기본값은 StringJoiner 가 비어있는 경우에만 반환됩니다 .

4. 결합 자 병합

merge ()를 사용하여 두 조이너를 병합 할 수 있습니다 . 다음 요소로 접두사와 접미사없이 주어진 StringJoiner 의 내용을 추가합니다 .

@Test public void whenMergingJoiners_thenReturnMerged() { StringJoiner rgbJoiner = new StringJoiner( ",", PREFIX, SUFFIX); StringJoiner cmybJoiner = new StringJoiner( "-", PREFIX, SUFFIX); rgbJoiner.add("Red") .add("Green") .add("Blue"); cmybJoiner.add("Cyan") .add("Magenta") .add("Yellow") .add("Black"); rgbJoiner.merge(cmybJoiner); assertEquals( rgbJoiner.toString(), "[Red,Green,Blue,Cyan-Magenta-Yellow-Black]"); }

rgbJoiner는 여전히 ","를 사용 하는 동안 "-" 를 사용하여 cmybJoiner의 내용을 연결 하는 방법에 유의하십시오 .

5. 스트림 API

이것이 StringJoiner로 할 수있는 거의 모든 것입니다 .

Stream API 에서 찾을 수있는 간접 사용법이 하나 더 있습니다 .

@Test public void whenUsedWithinCollectors_thenJoined() { List rgbList = Arrays.asList("Red", "Green", "Blue"); String commaSeparatedRGB = rgbList.stream() .map(color -> color.toString()) .collect(Collectors.joining(",")); assertEquals(commaSeparatedRGB, "Red,Green,Blue"); }

Collectors.joining ()은 내부적으로 StringJoiner 를 사용하여 결합 작업을 수행합니다.

6. 결론

이 빠른 자습서에서는 StringJoiner 클래스 를 사용하는 방법을 설명했습니다 . 전반적으로 StringJoiner 는 매우 원시적이며 목록 요소를 결합하는 것과 같은 몇 가지 기본 사용 사례를 해결하지 못합니다. 주로 수집가를 위해 설계된 것 같습니다 .

StringJoiner 가 요구 사항을 충족하지 못하는 경우 Guava 와 같은 다른 인기 있고 강력한 라이브러리가 있습니다.

그리고 평소처럼 모든 소스는 GitHub에서 찾을 수 있습니다.