【发布时间】:2018-07-10 00:41:39
【问题描述】:
遇到排序 ArrayList 的问题。我确信答案很简单,而且我一直忽略了一些东西,但过去几个小时我一直在努力解决这个问题,只需要别人的眼睛。
这是一个实验室项目,需要我们制作 3 个自定义类; Applications.java、Rectangle.java 和 RectangleList.java,我必须对 ArratList 进行排序,该 ArratList 包含具有长度和宽度数据字段的 Rectangle 对象。
顺序是 (W1, L1) > (W2, L2) 当且仅当 [(W1 > W2) 或 (W1 = W2 and L1 > L2)
我不确定需要查看哪些代码来寻求帮助,但我知道我应该使用 for 循环并且没有外部预制方法进行排序。我应该通过每个索引运行一个 for 循环并将该索引与其他索引进行比较,然后切换值。我当前的代码要么不执行任何操作(不进行排序),要么引发重复。只是发生了很多事情,我已经删除了所有内容并重新开始了很多次。不知道从哪里开始,我已经不知道如何思考这个问题了。
谢谢,请告诉我你需要看什么,我会尝试发布它。
编辑说明:我们不允许使用比较器或可比较或任何其他我还不知道的比较方法。
/////////////////////////////////////// ////////////////////////// 我想通了!
for(int index = 0; index < (list.boxes.size()-1); index++){
minIndex = index;
for(int index2 = index+1; index2 < list.boxes.size(); index2++){
if((list.boxes.get(minIndex).getLength() > list.boxes.get(index2).getLength()) || (list.boxes.get(minIndex).getLength() == list.boxes.get(index2).getLength() && list.boxes.get(minIndex).getWidth() > list.boxes.get(index2).getWidth())){
minIndex = index2;
}
}
list.boxes.set(index, list.boxes.set(minIndex, list.boxes.get(index)));
}
【问题讨论】:
-
您可能想使用
Comparable或Comaparator -
不允许。 =(
-
除非您愿意编写自己的排序和比较算法,否则自定义 Comparator 是通用解决方案
-
我们必须编写自己的排序和比较算法,这就是实验室,这就是我所坚持的。
-
很抱歉,该分配是故意的,因此您不会使用任何现有的 Java 库。我的建议是搜索不同排序算法的示例 Java 代码并根据您自己的情况对其进行修改。为了简单起见,首先让它只使用一个字段,然后添加第二个。
标签: java sorting object arraylist methods