ArrayList에서 항목의 고급를 찾는 더 좋은 방법은 무엇입니까?
Android 앱의 경우 다음 기능이 있습니다.
private ArrayList<String> _categories; // eg ["horses","camels"[,etc]]
private int getCategoryPos(String category) {
for(int i = 0; i < this._categories.size(); ++i) {
if(this._categories.get(i) == category) return i;
}
return -1;
}
이것이 요소의 위치를 얻기위한 함수를 작성하는 "가장 좋은"방법입니까? 아니면 내가 활용해야 할 자바에 멋진 shmancy 함수가 있습니까?
ArrayList
도구 indexOf()
방법 . 자세한 내용은 API를 확인하세요. 작동 방식은 다음과 가변합니다.
private ArrayList<String> _categories; // Initialize all this stuff
private int getCategoryPos(String category) {
return _categories.indexOf(category);
}
indexOf()
메서드가 반환하는 것을 정확하게 반환합니다.
ArrayList<String> alphabetList = new ArrayList<String>();
alphabetList.add("A"); // 0 index
alphabetList.add("B"); // 1 index
alphabetList.add("C"); // 2 index
alphabetList.add("D"); // 3 index
alphabetList.add("E"); // 4 index
alphabetList.add("F"); // 5 index
alphabetList.add("G"); // 6 index
alphabetList.add("H"); // 7 index
alphabetList.add("I"); // 8 index
int position = -1;
position = alphabetList.indexOf("H");
if (position == -1) {
Log.e(TAG, "Object not found in List");
} else {
Log.i(TAG, "" + position);
}
출력 : 목록 색인 : 7
H 를 전달하면 7 을 반환하고 J 를 전달하면 기본값을 -1 로 정의 했으므로 -1 을 반환 합니다.
끝난
List
되어 있고 임의 정렬 액세스 권한이 좋은 경우 (그대로 ArrayList
) Collections.binarySearch
. 않으면 오는가 List.indexOf
다른 사람들이 지적한대로 를 사용해야합니다 .
그러나 당신의 알고리즘은 건전합니다 (다른 ==
것들이 지적한 것 외에 ).
자바에는 사용할 수있는 기능이 있습니다.
ArrayList에는 다음과 같은 인스턴스 메소드가 있습니다.
indexOf(Object o)
(http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html)
_categories
다음과 같이 호출 할 수 있습니다.
_categories.indexOf("camels")
저는 Android 프로그래밍 경험이 없지만 표준 Java 애플리케이션에서 작동합니다.
행운을 빕니다.
Java API는 사용할 수있는 두 가지 메소드 indexOf(Object obj)
, 및 lastIndexOf(Object obj)
. 첫 번째는 발견 된 요소의 색인을 반환합니다. 두 번째는 목록을 거꾸로 검색하는 것과 같은 마지막 색인을 반환합니다.
참고 URL : https://stackoverflow.com/questions/8439037/better-way-to-find-index-of-item-in-arraylist
'ProgramingTip' 카테고리의 다른 글
“VM 초기화 중에 오류가 발생했습니다. (0) | 2020.10.11 |
---|---|
실제 Retina 앰퍼없이 Windows에서 Retina 용 웹 사이트를 테스트하는 방법은 무엇입니까? (0) | 2020.10.11 |
NoSuchFieldError : 클래스 Lcom / disdemo / R $ id에 유형 I의 정적 필드 listView1이 없습니다. (0) | 2020.10.11 |
C에서 긴 printf 문을 여러 줄로 나눌 수 있습니까? (0) | 2020.10.11 |
창 크기에 따라 Qt 위젯을 늘리는 방법은 무엇입니까? (0) | 2020.10.07 |