2011-03-16 3 views
3
List<String> strings; // contains "foo", "bar", "baz", "xyz" 

상단으로 이동 선택된 아이템을 이동하도록하고, 입력 "baz" 주어진다면 함수 (문자열 입력) 재 배열 문자열 방법 목록

"baz", "foo", "bar", "xyz" 

반환되어야하며 입력 "bar" 기능 재 배열 (문자열 입력) 문자열

+1

어떻게 당신이 것 같아 이 작업을 수행? 자신이 시도한 것을 보여주는 코드를 게시하십시오. "remove", "insert"와 같은 메소드에 대해 List API를 읽는 것으로 시작하십시오. – camickr

+0

@ user339108 가장 최근에 사용한 것을 표시하려면 액세스 순서를 사용하는 LinkedHashMap을 사용해야합니다. –

답변

6
public static <T> List<T> rearrange(List<T> items, T input) { 
    int index = items.indexOf(input); 
    List<T> copy; 
    if (index >= 0) { 
    copy = new ArrayList<T>(items.size()); 
    copy.add(items.get(index)); 
    copy.addAll(items.subList(0, index)); 
    copy.addAll(items.subList(index + 1, items.size())); 
    } else { 
    return items; 
    } 
    return copy; 
} 
13

에게 돌려 첫째, 항목을 제거하고 원래 목록의 상단에 원본 항목을 이동하려면 위치 1

List<String> strings; 

List<String> rearrange(String input) { 
    strings.remove(input); 
    strings.add(0,input); 
    return strings; 
} 
+1

평판이 20000을 넘었으므로 나는이 의견을 진지하게 생각합니다. 이 나쁜 질문에 대한 코드에서 preciese 대답을 제공하고 있습니까? 코드를 제거하면 내 대답이 정말 좋을까요? – sstendal

+2

처음 대답을 올렸을 때 대답이 중복되었습니다. 나는 내 의견에 해결책을 제안하고 마이크는 또한 숟가락으로 답을 주었다. 따라서 새로운 정보를 추가하지 않고 포럼을 혼란스럽게 만들었 기 때문에 귀하의 답변도 필요하지 않았습니다. 대신, 자바 언어를 배울 수 있도록 포스터를 올바른 방향으로 향하게하십시오. API를 실제로 읽도록 강요함으로써 어떤 방법을 사용할 수 있는지 배우게됩니다. 포스터가 답변을 이해하지 못하면 후속 조치 의견을 게시 할 수 있습니다. 사람들이 올바른 방향으로 포인터를 사용하여 스스로 해결할 수있게하십시오. – camickr

1

에서 다시 항목을 추가 :

public static <T> void rearrange(List<T> items, T input){ 
    int i = items.indexOf(input); 
    if(i>=0){ 
     items.add(0, items.remove(i)); 
    } 
} 
3
public static <T> void setTopItem(List<T> t, int position){ 
    t.add(0, t.remove(position)); 
} 
+2

비록 내가 당신의 대답을 완벽하게 이해한다고해도, 어떤 텍스트는 인정 될 것입니다. –

관련 문제