Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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 add(int索引,元素)不';我似乎无法移动元素_Java_Sorting_Data Structures - Fatal编程技术网

Java add(int索引,元素)不';我似乎无法移动元素

Java add(int索引,元素)不';我似乎无法移动元素,java,sorting,data-structures,Java,Sorting,Data Structures,我有一长串卡片对象。如果用户遗漏了一个问题,我希望将同一类别的卡移动到下一个插槽。接下来的列表以一种错开所有分类的方式进行排序,以便下一个问题都是不同的 我有一个排序方法,它应该在列表中的当前位置和下一个元素的所需类别中进行排序,并将该类型元素的下一次出现移动到当前位置之后 我看不出这个算法有什么问题,所以我认为可能是我使用的ArrayList方法错了。然而,在看了这些文档之后,它们似乎应该像预期的那样工作 我已经测试了这个列表,在它被认为排序后,什么都没有移动,但是这个列表确实包含了我正在寻找

我有一长串卡片对象。如果用户遗漏了一个问题,我希望将同一类别的卡移动到下一个插槽。接下来的列表以一种错开所有分类的方式进行排序,以便下一个问题都是不同的

我有一个排序方法,它应该在列表中的当前位置和下一个元素的所需类别中进行排序,并将该类型元素的下一次出现移动到当前位置之后

我看不出这个算法有什么问题,所以我认为可能是我使用的ArrayList方法错了。然而,在看了这些文档之后,它们似乎应该像预期的那样工作

我已经测试了这个列表,在它被认为排序后,什么都没有移动,但是这个列表确实包含了我正在寻找的类别

public static void sortCategoryToNext(ArrayList<Card> cardlist,String cat,int currentIndex){
           boolean sorted = false;
           int i = currentIndex;
           int insertionpoint = i;
            do {
                i++;
                Card nextCard = cardlist.get(i);
                if(nextCard.getCategory().equals(cat)){
                    sorted = true;
                    cardlist.add(insertionpoint,nextCard);
                    cardlist.remove(nextCard);
                }

           }while(!sorted);
        }
publicstaticvoidsortcategorytonext(arraylistcardlist,stringcat,int-currentIndex){
布尔排序=假;
int i=当前索引;
int insertionpoint=i;
做{
i++;
Card nextCard=cardlist.get(i);
if(nextCard.getCategory().equals(cat)){
排序=真;
cardlist.add(insertionpoint,nextCard);
cardlist.remove(nextCard);
}
}而(!排序);
}
删除对象的第一个匹配项,该对象位于刚刚插入该对象的列表位置

与此相反:

                cardlist.add(insertionpoint,nextCard);
                cardlist.remove(nextCard);
试试这个:

                cardlist.remove(i);
                cardlist.add(insertionpoint,nextCard);
作为一种改进,上面的代码还使用了,这应该更有效,因为它不必遍历列表来查找匹配项。

删除对象的第一个匹配项,该对象位于刚刚插入该对象的列表位置

与此相反:

                cardlist.add(insertionpoint,nextCard);
                cardlist.remove(nextCard);
试试这个:

                cardlist.remove(i);
                cardlist.add(insertionpoint,nextCard);

作为一种改进,上面的代码还使用了,这应该更有效,因为它不必遍历列表来查找匹配的项。

您只需反转
添加
删除
函数即可。在这里,您正在删除刚才添加的卡,因为
remove
删除了第一次出现的卡。您只需反转
add
remove
功能即可。在这里,您正在删除刚才添加的卡,因为
remove
删除了第一次出现的卡。