我正在尝试使用数组列表,并且我有一行坐标。我想将这一行中的所有坐标移到前面或后面。我不确定我的代码是否正确。
List<Coordinate> coordinates = new ArrayList<>();
void addCoordinateToList(Coordinate singleCoordinate) {
coordinates.add(singleCoordinate)
}
void addCoordinateToBackList(ArrayList<> coordinateList) {
for(int i = 0; i < coordinates.size(); i++) {
coordinateList.add(i, coordinateList(i));
}
}
void addCoordinateToFrontList(ArrayList<> coordinateList) {
for(int i = coordinates.size(); i > 0; i--) {
coordinateList.add(i, coordinatesList(i));
}
}
这并不是最终的代码,它只是暂时把想法写出来。
这里不需要使用for
循环。
相反,您可以使用addAll
方法来实现您想要的:
void addCoordinatesToBack(List<Coordinate> coordinateList) {
coordinates.addAll(coordinateList);
}
void addCoordinatesToFront(List<Coordinate> coordinateList) {
coordinates.addAll(0, coordinateList);
}
addAll
有两种形式:
addAll(Collection c)
将指定的Collection
的所有元素添加到列表的末尾- CCD_ 6将指定的CCD_。使用位置
0
将它们添加到列表的开头
还要注意,我在参数中使用了List
而不是ArrayList
,因为这使它更加灵活。
请注意,这与反转列表并不完全相同。
此功能内置在List界面中。您可以使用以下功能:
List<String> myList = new ArrayList<>();
//adds to the end of the list
myList.add("reading");
myList.addAll(List.of("the","documentation","first!"));
//adds to the front of the list
myList.add(0,"with");
myList.addAll(0,List.of("It","begins");
您的代码
void addCoordinateToBackList(ArrayList<> coordinateList) {
for(int i = 0; i < coordinates.size(); i++) {
coordinateList.add(i, coordinateList.get(i));
}
}
将无休止地将原始列表的第一个元素添加到其自身的开头。请注意,我已将调用添加到List.get(int)
。
由于索引i=coordinates.size()
越界,最后一个方法将抛出ArrayIndexOutOfBounds异常。您可能需要更改
void addCoordinateToFrontList(ArrayList<> coordinateList) {
for(int i = coordinates.size() - 1; i >= 0; i--) {
coordinateList.add(i, coordinatesList.get(i));
}
}
但这将再次无休止地添加列表的最后一个元素。
也许你想要实现的是:
List<Object> coordinateList = new ArrayList<>();
...
java.util.Collections.reverse(coordinateList);
这将颠倒列表中元素的顺序。请注意,它将对给定的列表起作用,不会返回任何内容。这只适用于可修改的列表。
编辑:你可能是想";"旋转";元素,对吧?还有方法Collections.rotate(List input, int distance)
。文件:
将指定列表中的元素旋转指定的距离。调用此方法后,索引i处的元素将是之前索引(i-distance(mod-list.size((处的元素,用于0和list.size((含(-1之间的所有i值。(此方法对列表的大小没有影响。(例如,假设列表包括[t,a,n,k,s]。调用Collections.rotate(list,1((或Collections.rotat(list,-4((后,list将包括[s,t,a,n,k]。
这在两个方向上都有效。