development

List 또는 Set의 첫 번째 요소를 얻는 방법은 무엇입니까?

big-blog 2020. 4. 1. 08:00
반응형

List 또는 Set의 첫 번째 요소를 얻는 방법은 무엇입니까? [복제]


이 질문에는 이미 답변이 있습니다.

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


Collection c;

Iterator iter = c.iterator();

Object first = iter.next();

(이것은 a의 "first"요소를 갖는 가장 가까운 것 Set입니다 Set. 대부분의 구현에 대해서는 전혀 의미가 없다는 것을 알아야합니다 . 이것은 LinkedHashSet 및 TreeSet에 대해서는 의미가 있지만 HashSet에는 의미가 없습니다.)


javadoc을 참조하십시오

목록

list.get(0);

또는 세트

set.iterator().next();

호출하여 위의 방법을 사용하기 전에 크기를 확인하십시오. isEmpty()

!list_or_set.isEmpty()

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

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

(설정 / 목록이 비어있는 경우에 유용합니다.)


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 블록에 뒤 따르거나 캡슐화됩니다.

코 틀린 :

Kotlin에서는 Array 와 대부분의 Collection (예 : List)에 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()

아무도 구아바 솔루션을 아직 제안하지 않은 것에 놀랐습니다.

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.toArray()[0];

명부

list.get(0);

이상

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();
}

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

도움이 되었기를 바랍니다.


이것은이 질문에 대한 정확한 대답은 아니지만 객체를 정렬 해야하는 경우 SortedSet에 first () 메소드가 있습니다.

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

정렬 된 객체는 String과 같은 Comparable 인터페이스를 구현해야합니다.


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

정의에 따르면 세트는 단순히 요소를 포함하며 특별한 순서는 없습니다. 따라서 얻을 수있는 "첫 번째"요소는 없지만 반복자를 사용하여 (각 루프마다 사용) 반복하거나 toArray () 메서드를 사용하여 배열로 변환 할 수 있습니다.

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

반응형