Android에서 ArrayList를 회전해야합니다. 내가 찾은 모든 솔루션이 필요한 방식으로 작동하지 않았습니다.
ArrayList를 주어진 위치로 어떻게 회전시킬 수 있습니까? 이미 정렬되어 있으므로 오름차순 또는 내림차순으로 정렬 할 필요가 없습니다. 나는 이것을 시도하고있다 :
ArrayList<String> myArray = new ArrayList;
myArray.add("A");
myArray.add("A");
myArray.add("B");
myArray.add("B");
myArray.add("B");
myArray.add("C");
myArray.add("C");
myArray.add("D");
myArray.add("D");
myArray.add("D");
//the above will output: A,A,B,B,B,C,C,D,D,D
String rotateTo = "C";
//this gives me random unwanted results...
for (int i = 0; i < myArray.size(); i++) {
String item = myArray.get(i);
if(item.equals(rotateTo)){
Collections.rotate(myArray, i);
break;
}
}
//the output I need: C,C,D,D,D,A,A,B,B,B
무엇이 잘못되었을 수 있습니까?
코드의 작은 변경으로 작동합니다.
ArrayList<String> myArray = new ArrayList();
myArray.add("A");
myArray.add("A");
myArray.add("B");
myArray.add("B");
myArray.add("B");
myArray.add("C");
myArray.add("C");
myArray.add("D");
myArray.add("D");
myArray.add("D");
//the above will output: A,A,B,B,B,C,C,D,D,D
System.out.println(myArray);
String rotateTo = "C";
int distance = -1;
for (int i = 0; i < myArray.size(); i++) {
String item = myArray.get(i);
if(item.equals(rotateTo)){
distance = i;
break;
}
}
//you can use distance = myArray.indexOf(rotateTo);
//to get index rather than above for loop
//Check Jerry Ans.
if (distance != -1) {
//this gives me random unwanted results...
Collections.rotate(myArray, distance);
}
System.out.println(myArray);
출력 [A, A, B, B, B, C, C, D, D, D] [C, C, D, D, D, A, A, B, B, B]
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다