Java Android-如何根据ArrayList项的值旋转特定组?
我需要在Android中旋转一个ArrayList。我找到的所有解决方案都没有按照我需要的方式工作 如何将ArrayList旋转到给定位置?我不需要对它进行升序或降序排序,因为它已经被排序了。我正在尝试这个:Java Android-如何根据ArrayList项的值旋转特定组?,java,android,Java,Android,我需要在Android中旋转一个ArrayList。我找到的所有解决方案都没有按照我需要的方式工作 如何将ArrayList旋转到给定位置?我不需要对它进行升序或降序排序,因为它已经被排序了。我正在尝试这个: ArrayList<String> myArray = new ArrayList; myArray.add("A"); myArray.add("A"); myArray.add("B"); myArray.add("B"); myArray.add("B"); myArr
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 myArray=新建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”);
//以上将输出:A、A、B、B、C、C、D、D、D
字符串旋转到=“C”;
//这给了我随机不想要的结果。。。
对于(int i=0;i
有什么可能是错误的?代码中的小改动可以让它正常工作
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);
ArrayList 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”);
//以上将输出:A、A、B、B、C、C、D、D、D
System.out.println(myArray);
字符串旋转到=“C”;
整数距离=-1;
对于(int i=0;i
输出
[A,A,B,B,B,C,C,D,D,D]
[C,C,D,D,D,A,A,B,B,B]
只需先找到
rotateTo
字符串的现有索引即可
int index = myArray.indexOf(rotateTo);
if (index != -1) {
Collections.rotate(myArray, index);
}
首先找到字符“C”的距离。那就应用它。@Abhishek我明白你的意思了。。。这就是循环的作用,因为“i”是第一个“C”的距离。问题是旋转方法,它将第一个项目向前移动“i”位置。我需要的是将“I”位置的项目旋转到ArrayList中的第一个位置。请检查答案。杰瑞的回答会消除你的疑虑。否则,复制并粘贴我的答案。虽然@Jerry06 answer也是正确的,但这个答案对我来说是最有效的,因为这样我可以获得myArray中任何对象的属性索引。读者提示:我必须将距离乘以-1才能向后推动旋转,这正是我想要的,因此相应的对象被旋转到数组中的第一个位置。谢谢你的帮助!!