2012-05-14 3 views
1

은 내가 도트 연산자를 사용하여이 API에 아무것도 표시되지 않는 내장 검색 할 때 나는 LinkedList 검색을위한 지금 LinkedLIst에서 항목을 어떻게 검색합니까? 항목을 추가

public void remove(Object s) { 
    list.remove(s); 
} 

을 사용하여 항목을 삭제하려면
public void add(Object s) { 
    list.add(s); 
} 

를 사용 검색 기능을 제안합니다. 그것이 contains일까요?

+3

난 당신이 URL을 즐겨 찾기에 추가하는 것이 좋습니다 - http://docs.oracle.com/javase/7/docs/api/index.html - Java 7 SE API의 Javadoc 트리의 루트 귀하의 질문에 대한 답변과 수백만에 달하는 답변을 보유하고 있습니다. –

+1

당신은'contains' 메소드를 사용해야한다고 대답했지만 "true 또는 false 만 리턴하기 때문에"응답에 만족하지 않았습니다. 따라서 시나리오를 좀 더 자세하게 설명해 주시면 더 나은 해결책을 찾을 수 있습니다. – ZeroOne

+0

동의 - 나는 왜 당신이 검색 할 객체를 제공 할 때 객체를 다시 가져와야하는지 이해하지 못합니다. 사용 사례를 자세히 설명하십시오. –

답변

2

당신이 당신이 그것을 찾기 위해 indexOf를 사용하려면, 실제 인스턴스가 발견 액세스 할 수 있으며 get가 발견 된 인스턴스를 반환 할 수 있도록 항목이 목록에 배치됩니다 을 알고 싶은 것입니다. 이 둘을 결합하는 방법은 없습니다.

List list = ... 
Object item = ... 
int index = list.indexOf(item); 
if (index > 0) { 
    Object found = list.get(index); 
    ... 
} 
0

예, contains입니다. 좀 더 애호가가 필요하다면 LinkedList의 구현을 직접 작성하거나 몇 가지 유틸리티 함수를 만들어야합니다.

+0

좋아, 그게 내가 생각한거야, 내가 API를 혼자서 사용하는 것을 잊을 수는 없다. – Renuz

2

예 LinkedList API의 contains 메소드는 검색 요소가 포함되어 있으면 true을 반환합니다.

1

예, 검색하려면 contains 방법을 사용하십시오. 그러나 LinkedList를 통한 검색은 O (n) 시간이 걸리는데, 즉 시간은 목록의 크기에 따라 선형 적으로 달라 지므로 목록이 크고 많은 검색을 수행하는 경우 다른 데이터를 사용하는 것이 좋습니다 구조. 예를 들어, 당신은 아마 다음과 같은 목록을 초기화해야합니다

Collection something = new LinkedList(); 

을 그런 다음 검색 작업의 성능이 프로그램을 아프게 알아낼 경우, 당신은 대신에 이런 짓을 했을까 :

Collection something = new LinkedHashSet(); 

멋진 검색을 위해서는 목록이나 다른 컬렉션 대신 Map을 사용해야하지만 완전히 다른 데이터 구조입니다.

+0

글쎄 그것은 200 개체 아래에있을 것이므로 문제는되지 않을 것입니다. 평균은 50 이하입니다. – Renuz

0

다음 코드 샘플은 u는 이해 할 것

// Assuming that we java imported java.util.LinkedList........ 

    LinkedList ll =new LinkedList(); 
    ll.add("red"); 
    ll.add("blue"); 
    ll.get(0); // gets the first element......... 
    ll.getFirst(); // returns the first element.. 
    ll.getLast(); // returns the last element.... 
    int position = ll.indexOf("red");   

    boolean status; 
    status= ll.contains("red"); // returns true if list contains red or returns false.... 
관련 문제