ProgramingTip

ArrayList에서 항목의 고급를 찾는 더 좋은 방법은 무엇입니까?

bestdevel 2020. 10. 11. 10:55
반응형

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

반응형