我试图在 ArrayList 中搜索“装箱”的整数,并将最小值放在列表的前面。但是,当有新的最小值时,它似乎并没有将它放在前面。
以下是一些示例:例如,如果一个名为 list 的变量存储以下值:{3, 8, 92, 4, 2, 17, 9} 并且您调用:minToFront(list);它应该在调用后存储以下值:{2, 3, 8, 92, 4, 17, 9} 假定列表存储至少一个值。
private static void minToFront(ArrayList<Integer> thing) {
int tempMin = Integer.MAX_VALUE;
for (int i = 0; i < thing.size(); i++) {
if (tempMin < thing.get(i)) {
thing.add(0,thing.get(i));
thing.remove(i+1);
i++;
}
}
}
最佳答案
你的逻辑有点不对。看看你的 if 语句:
if (tempMin < thing.get(i)) {
你问的是列表元素是否大于最大 int 值,这永远不可能是真的。您需要完全遍历列表一次以找到最小值及其位置,然后操作列表。
if (thing.size() < 2) // special case
return;
int min = thing.get(0), minLoc = 0;
for (int i = 1; i < thing.size(); i++) {
int next = thing.get(i);
if (next < min) {
min = next;
minLoc = i;
}
}
thing.add(0, thing.remove(minLoc));
关于java - 遇到 ArrayLists 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19193482/