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);
java8 이상
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
'development' 카테고리의 다른 글
jquery는 URL에서 querystring을 얻습니다. (0) | 2020.04.01 |
---|---|
C 기본 인수 (0) | 2020.04.01 |
모든 배열 요소를 0으로 초기화하는 단축키가 있습니까? (0) | 2020.04.01 |
'\ r': 명령을 찾을 수 없음-.bashrc / .bash_profile (0) | 2020.04.01 |
MySQL의 모든 쿼리를 기록 (0) | 2020.04.01 |