Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使for循环从任意位置开始并在同一位置结束?_Java_Android - Fatal编程技术网

Java 如何使for循环从任意位置开始并在同一位置结束?

Java 如何使for循环从任意位置开始并在同一位置结束?,java,android,Java,Android,我有一个整数类型的数组列表,比如1,2,3,4,5,6,7,8,9。我需要用动态索引值对列表进行重新排序。假设如果我将索引值传递为4,数组应该重新排序为5,6,7,8,9,1,2,3,4…我不懂Java,但我会这样做: public void foo(int index, array arr) { int len = arr.length; int pos = 0; string hs = ""; for(int i = index+1;i != index;i+

我有一个整数类型的数组列表,比如1,2,3,4,5,6,7,8,9。我需要用动态索引值对列表进行重新排序。假设如果我将索引值传递为4,数组应该重新排序为5,6,7,8,9,1,2,3,4…

我不懂Java,但我会这样做:

public void foo(int index, array arr) {
    int len = arr.length;
    int pos = 0;
    string hs = "";
    for(int i = index+1;i != index;i++) {
        if(i = len-1) {
            i=0
        }
        hs = arr[pos];
        arr[pos] = arr[i];
        arr[i] = arr[pos];
        pos++;
    }
}

我希望这能帮助你,或者至少能激励你

我不赞成这个。。改用
Collections.subList()

fun reorder(list: ArrayList<Int>, breakIndex: Int): ArrayList<Int> {
    return (list.subList(breakIndex, list.size) + list.subList(0, breakIndex)) as ArrayList<Int>
}
fun重新排序(列表:ArrayList,breakIndex:Int):ArrayList{
返回(list.subList(breakIndex,list.size)+list.subList(0,breakIndex))作为ArrayList
}
这是在科特林,但我想你明白了。否则请告诉我

编辑:我可以为您添加Java版本。虽然我已经有一段时间没有使用Java了,所以这可能比必要的更难看,但是

public static ArrayList<Integer> reorder(ArrayList<Integer> list, Integer breakIndex) {
    ArrayList<Integer> reorderedList = new ArrayList<>();
    reorderedList.addAll(list.subList(breakIndex, list.size()));
    reorderedList.addAll(list.subList(0, breakIndex));
    return reorderedList;
}
公共静态ArrayList重新排序(ArrayList列表,整数breakIndex){
ArrayList reorderedList=新的ArrayList();
redordedList.addAll(list.subList(breakIndex,list.size());
redordedList.addAll(list.subList(0,breakIndex));
返回重新排序列表;
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList原创作家;
整数指数;
//初始值样本
originalList=新的ArrayList(Arrays.asList(1,2,3,4,5,6,7,8,9));
//初始值索引
指数=4;
//重新排列数组列表
ArrayList resultList=reorderListArray(原始列表,索引);
Log.v(“resultList”,“重新排序后的索引:”+resultList.toString());
}
公共ArrayList reorderListArray(ArrayList listArr,int indexValue){
ArrayList resultList=新建ArrayList();
int indexOrder=0;
//案例1
if(indexValue==listArr.get(0))返回listArr;
//案例2
if(indexValue==listArr.get(listArr.size()-1)){
收款。反向(listArr);
返回listArr;
}
//案例3
对于(int i=0;i

您需要检查参数输入:[数组列表]和[动态索引值]的条件。

您尝试过什么吗?让我们看看你的效率:使用%operator.aww它是如此简单,工作如此出色。。多谢各位@Algar@Sri不用担心,我很乐意帮忙!:)如果您认为答案正确,请将其标记为正确,我将不胜感激:)
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ArrayList<Integer> originalList;
    int index;

    // init value sample
    originalList = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7,8,9));

    // init value index
    index = 4;

    // reorder array list
    ArrayList<Integer> resultList = reorderListArray(originalList, index);

    Log.v("resultList", "index after reorder: " + resultList.toString());

}

public ArrayList<Integer> reorderListArray(ArrayList<Integer> listArr, int indexValue) {
    ArrayList<Integer> resultList = new ArrayList<Integer>();
    int indexOrder = 0;
    // case 1
    if (indexValue == listArr.get(0)) return listArr;

    // case 2
    if (indexValue == listArr.get(listArr.size() - 1)) {
        Collections.reverse(listArr);
        return listArr;
    }

    // case 3
    for(int i=0; i < listArr.size(); i++) {
        if(listArr.get(i) == indexValue) {
            indexOrder = i;
            break;
        }
    }
    for(int i=indexOrder; i < listArr.size(); i++) {
        resultList.add(listArr.get(i));
    }
    for(int i=0; i < indexOrder; i++) {
        resultList.add(listArr.get(i));
    }
    return resultList;
}