[정수리] 가바학습의 Lists
newArrayList()
newArrayList(E... elements)
newArrayList(Iterable<? extends E> elements)
newArrayList(Iterator<? extends E> elements)
다음 두 함수는 ArrayList 객체를 구성할 때 공간을 할당해야 하는 크기를 제공합니다.
newArrayListWithCapacity(int initialArraySize)
newArrayListWithExpectedSize(int estimatedSize)
만약 당신이 원소의 개수를 미리 알고 있다면 newArrayListWithCapacity 함수를 사용할 수 있습니다.만약 원소의 개수를 확정할 수 없다면 new Array List With Expected Size 함수를 사용하여 new Array List With Expected Size 함수에서 컴퓨터 Array List Capacity (int array Size) 함수를 호출할 수 있습니다. 이 함수는 다음과 같습니다.
@VisibleForTesting static int computeArrayListCapacity(int arraySize) {
checkArgument(arraySize >= 0);
// TODO(kevinb): Figure out the right behavior, and document it
return Ints.saturatedCast(5L + arraySize + (arraySize / 10));
}
되돌아오는 용량 크기는 5L + array Size + (array Size/10) 이고, array Size가 비교적 크면 주어진 크기와 실제 분배된 용량의 비율은 10/11이다.Lists 클래스는 다음과 같은 함수 인터페이스를 가진 LinkedList, newCopyOnWriteArrayList 객체 구성도 지원합니다.
newLinkedList()
newLinkedList(Iterable<? extends E> elements)
newCopyOnWriteArrayList()
newCopyOnWriteArrayList(Iterable<? extends E> elements)
우리는 또한 두 개 (또는 세 개) 유형의 같은 데이터를 하나의list에 저장할 수 있다. 이렇게 하면 하나의 매개 변수만 있는 함수나 매개 변수를 줄여야 하는 함수에 전달할 수 있다. 이 함수들은 다음과 같다.
asList(@Nullable E first, E[] rest)
asList(@Nullable E first, @Nullable E second, E[] rest)
Lists 클래스에서transform 함수는 전송된function에 따라fromList를 상응하는 처리를 하고 처리된 결과를 새로운list 대상에 저장하면 분석에 유리하다. 함수 인터페이스는 다음과 같다.
public static <F, T> List<T> transform(
List<F> fromList, Function<? super F, ? extends T> function)
사용 예:
Function<String, Integer> strlen = new Function<String, Integer>() {
public Integer apply(String from) {
Preconditions.checkNotNull(from);
return from.length();
}
};
List<String> from = Lists.newArrayList("abc", "defg", "hijkl");
List<Integer> to = Lists.transform(from, strlen);
for (int i = 0; i < from.size(); i++) {
System.out.printf("%s has length %d
", from.get(i), to.get(i));
}
Function<String, Boolean> isPalindrome = new Function<String, Boolean>() {
public Boolean apply(String from) {
Preconditions.checkNotNull(from);
return new StringBuilder(from).reverse().toString().equals(from);
}
};
from = Lists.newArrayList("rotor", "radar", "hannah", "level", "botox");
List<Boolean> to1 = Lists.transform(from, isPalindrome);
for (int i = 0; i < from.size(); i++) {
System.out.printf("%s is%sa palindrome
", from.get(i), to1.get(i) ? " " : " NOT ");
}
// changes in the "from" list are reflected in the "to" list
System.out.printf("
now replace hannah with megan...
");
from.set(2, "megan");
for (int i = 0; i < from.size(); i++) {
System.out.printf("%s is%sa palindrome
", from.get(i), to1.get(i) ? " " : " NOT ");
}
Lists는 또한 들어오는 String 또는 CharSequence를 단일 문자로 분할하여 다음과 같은 새 List 객체에 저장하여 반환할 수도 있습니다.
ImmutableList<Character> wyp = Lists.charactersOf("wyp");
System.out.println(wyp);
List 대상 안의 데이터 순서를 반전시키면reverse 함수로 실현할 수 있고,List 대상 안의 하위 서열을subList 함수로 실현할 수 있다.더 많은 실현은 그 원본 코드를 참조할 수 있다.(끝)
전재: 과거 기억에서 전재(http://www.iteblog.com/) 본문 링크 주소: Guava 학습의 Lists(http://www.iteblog.com/archives/689)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.