Java- 문자열에서 문자열을 연결하기위한 내장 기능이 있습니까?

StackOverflow https://stackoverflow.com/questions/1810954

  •  06-07-2019
  •  | 
  •  

문제

아니면 이것보다 더 나은 방법?

String concat(String[] strings) {
  StringBuilder out = new StringBuilder();

  for(String next: strings) {
    out.append(next);
  }

  return out.toString();
}

걱정할 필요가 없습니다.

도움이 되었습니까?

해결책

아니요, 현재 Java 라이브러리가 아닙니다.

JDK7에서는 쓸 수 있어야합니다 String.join("", strings). 루프를위한 Posh에서 색인을 원하는 용도의 "85%"는 문자열 조인을 수행하는 것이 었습니다 (어쨌든 할 수 있음).

효율적으로 효율적으로 원한다면 다음과 같은 것으로 쓸 수 있다고 생각합니다.

public static String concat(String... strs) {
    int size = 0;
    for (String str : strs) {
        size += str.length;
    }

    final char[] cs = new char[size];
    int off = 0;
    try {
        for (String str : strs) {
            int len = str.length();
            str.getChars(0, len, cs, off);
            off += len;
        }
    } catch (ArrayIndexOutOfBoundsException exc) {
        throw new ConcurrentModificationException(exc);
    }
    if (off != cs.length) {
        throw new ConcurrentModificationException();
    }
    return new String(cs);
}

(물론 편집 또는 테스트되지 않았습니다.)

다른 팁

새로운 것을 살펴보십시오 Google Guava 라이브러리, 그것은 통합 될 것이다 Google 컬렉션 일단 1.0RC4에서 1.0으로 전달되면. 구아바와 컬렉션은 당신에게 약간의 힘과 우아함을 제공하며 이미 Google 프로덕션 코드에서 광범위하게 사용되었습니다.

그만큼 가입자 클래스는 예제에 완벽하게 어울립니다.

String[] strings = { "Stack", "Overflow", ".com" };
String site = Joiner.on("").join(strings);

Aleksander Stensby는 좋은 것을 가지고 있습니다 네 부분 탐색 구아바/컬렉션.

Apache Collections와 마찬가지로 JDK의 일부는 아니지만 Java.util.collection 위에 매우 신중하게 구축됩니다.

org.apache.commons.lang.StringUtils.join

Google Guava를 보는 두 번째 권장 사항.

Google 컬렉션은 지난주에 출시되었으며 이번 주에는 Guava가 테스트를 위해 출시되었습니다. Google 컬렉션은 견고하며 API는 변경되지 않습니다. 나는 Apache One보다 Google 컬렉션을 선호합니다. Google 사람들은 또한 생산에 사용하기에 충분히 빠르다고 주장합니다. 이는 상당히 인상적이며 개인적으로 확인할 수는 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top