정수 목록이 있고 List<Integer>
모든 정수 개체를 문자열로 변환하여 새로운 List<String>
.
당연히 새를 만들고 각 정수를 List<String>
호출하는 목록을 반복 할 수 String.valueOf()
있지만 더 나은 (read : more automatic ) 방법 이 있는지 궁금 합니다.
답변
내가 아는 한, 반복하고 인스턴스화하는 것이 이것을 수행하는 유일한 방법입니다. 다음과 같은 것 (다른 사람에게 도움이 될 수있는 방법을 알고 계실 것입니다) :
List<Integer> oldList = ...
/* Specify the size of the list up front to prevent resizing. */
List<String> newList = new ArrayList<>(oldList.size());
for (Integer myInt : oldList) {
newList.add(String.valueOf(myInt));
}
답변
사용 구아바 – 프로젝트에서 구글 컬렉션 , 당신은 사용할 수 transform
의 방법을 나열 클래스
import com.google.common.collect.Lists;
import com.google.common.base.Functions
List<Integer> integers = Arrays.asList(1, 2, 3, 4);
List<String> strings = Lists.transform(integers, Functions.toStringFunction());
에서 List
반환 된 transform
것은 백업 목록 의 보기 입니다. 변환은 변환 된 목록에 대한 각 액세스에 적용됩니다.
그주의 Functions.toStringFunction()
발생합니다 NullPointerException
확실 목록이 null이 포함되지 않습니다 경우 그렇게 밖에 이용, 널 (null)에 적용 할 때.
답변
Java 8을위한 솔루션입니다. Guava보다 약간 길지만 최소한 라이브러리를 설치할 필요는 없습니다.
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
//...
List<Integer> integers = Arrays.asList(1, 2, 3, 4);
List<String> strings = integers.stream().map(Object::toString)
.collect(Collectors.toList());
답변
당신이하고있는 일은 괜찮지 만 ‘Java-it-up’이 필요하다고 느끼면 Transformer 와 Apache Commons 의 collect 메소드 를 사용할 수 있습니다. 예 :
public class IntegerToStringTransformer implements Transformer<Integer, String> {
public String transform(final Integer i) {
return (i == null ? null : i.toString());
}
}
..그리고..
CollectionUtils.collect(
collectionOfIntegers,
new IntegerToStringTransformer(),
newCollectionOfStrings);
답변
String.valueOf의 소스는 다음을 보여줍니다.
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
그다지 중요하지는 않지만 toString을 사용합니다.
답변
String.valueOf를 사용하는 대신 .toString (); @ johnathan.holland가 설명하는 일부 자동 복싱을 피합니다.
javadoc은 valueOf가 Integer.toString ()과 같은 것을 반환한다고 말합니다.
List<Integer> oldList = ...
List<String> newList = new ArrayList<String>(oldList.size());
for (Integer myInt : oldList) {
newList.add(myInt.toString());
}
답변
비 JDK 라이브러리로 속임수없이 한 줄짜리 솔루션이 있습니다.
List<String> strings = Arrays.asList(list.toString().replaceAll("\\[(.*)\\]", "$1").split(", "));