programing

목록 또는 세트의 첫 번째 요소를 얻는 방법

prostudy 2022. 6. 26. 09:41
반응형

목록 또는 세트의 첫 번째 요소를 얻는 방법

목록 또는 세트의 첫 번째 요소를 얻을 수 있는지 알고 싶습니다.어떤 방법을 사용할까요?

javadoc 참조

리스트의

list.get(0);

또는 설정

set.iterator().next();

위 방법을 사용하기 전에 크기를 확인합니다.isEmpty()

!list_or_set.isEmpty()
Collection c;

Iterator iter = c.iterator();

Object first = iter.next();

(이것은, 「최초의」요소에 가장 가까운 것입니다.Set대부분의 구현에는 전혀 의미가 없다는 것을 깨달으셔야 합니다.SetLinked Hash Set 및 Tree Set에는 의미가 있을 수 있지만 Hash Set에는 의미가 없습니다.)

Java > = 8에서는 스트리밍 API를 사용할 수도 있습니다.

Optional<String> first = set.stream().findFirst();

(만약 Set/List은 비어 있을 수 있는데 유용한).

"방금이 있다고 가정하자List<String> strings당신의 첫번째 항목을 원한다.

몇가지 방법이 그것을 할: 있다.

자바(pre-8):

String firstElement = null;
if (!strings.isEmpty() && strings.size() > 0) {
    firstElement = strings.get(0);
}

자바 8시

Optional<String> firstElement = strings.stream().findFirst();

궈바

String firstElement = Iterables.getFirst(strings, null);

아파치 공유지(4+)

String firstElement = (String) IteratorUtils.get(strings, 0);

아파치 공유지(4전에)

String firstElement = (String) CollectionUtils.get(strings, 0);

에 의해 혹은 적절한 검사나 try-catch 블록 안에 캡슐화 줍니다.

코틀린:

코틀린에 발열과 모음의 대부분(즉 유효:목록)a다first메서드 호출.그래서 코드를 이렇게 생겼을 것이다.

한 목록:

val stringsList: List<String?> = listOf("a", "b", null)
val first: String? = stringsList.first()

한 정열은:

val stringArray: Array<String?> = arrayOf("a", "b", null)
val first: String? = stringArray.first()

이어서 적절한 체크 또는 트라이캐치 블록으로 캡슐화됩니다.

또한 Kotlin은 이를 위해 안전한 방법을 제공합니다.kotlin.collections예를 들어 또는 getOrElse, 또는 getOrDefault을 사용하여firstOrNull.JRE8

아직 guava 솔루션을 제안하지 않은 것이 놀랍습니다.

com.google.common.collect.Iterables.get(collection, 0)
// or
com.google.common.collect.Iterables.get(collection, 0, defaultValue)
// or
com.google.common.collect.Iterables.getFirst(collection, defaultValue)

또는 단일 요소가 필요한 경우:

com.google.common.collect.Iterables.getOnlyElement(collection, defaultValue)
// or
com.google.common.collect.Iterables.getOnlyElement(collection)

이후

Set<String> set = new TreeSet<>();
    set.add("2");
    set.add("1");
    set.add("3");
    String first = set.stream().findFirst().get();

이렇게 하면 목록 또는 세트의 첫 번째 요소를 검색할 수 있습니다.세트 또는 목록이 비어 있지 않은 경우(get()아무렇게나 던져버리다java.util.NoSuchElementException)

orElse()(이는 회피책일 뿐 권장하지 않습니다)

String first = set.stream().findFirst().orElse("");
set.removeIf(String::isEmpty);

다음은 적절한 접근법입니다.

Optional<String> firstString = set.stream().findFirst();
if(firstString.isPresent()){
    String first = firstString.get();
}

마찬가지로 목록의 첫 번째 요소를 가져올 수 있습니다.

이게 도움이 됐으면 좋겠다.

세트

set.toArray()[0];

목록.

list.get(0);

이 질문에 대한 정확한 답변은 아니지만 SortedSet에 first() 메서드가 있습니다.

SortedSet<String> sortedSet = new TreeSet<String>();
sortedSet.add("2");
sortedSet.add("1");
sortedSet.add("3");
String first = sortedSet.first(); //first="1"

정렬된 개체는 비교 가능한 인터페이스를 구현해야 합니다(String처럼).

get(index) 메서드를 사용하여 목록에서 요소에 액세스할 수 있습니다.

집합은 정의상 요소를 포함할 뿐 특별한 순서가 없습니다.따라서 얻을 수 있는 '첫 번째' 요소는 없지만 반복기를 사용하여 반복하거나(각 루프에 대해 를 사용), toArray() 메서드를 사용하여 배열로 변환할 수 있습니다.

언급URL : https://stackoverflow.com/questions/8882295/how-to-get-the-first-element-of-the-list-or-set

반응형