java - 遇到 ArrayLists 问题

标签 java for-loop arraylist

我试图在 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/

相关文章:

java - 分块加载 SELECT 查询的实际数据(无需再次执行相同的查询)

javascript - 在 Javascript 中添加未定义数组的总和

r - for 循环遍历 df 列表正在合并数据

java - 创建 ArrayList<String> 元素的数组

java - 如何在一行中使用 Java 中的 ArrayList 创建大小为 M*N 的二维矩阵,其中 X 作为每个单元格的值?

string - Groovy:如何按字符串长度顺序对 String:s 的 ArrayList 进行排序?

java - Dropwizard Jersey 设置 URL 模式打破 Swagger 404?

java - 如何分配 <s :property value ="a"> value to a jsp variable

javascript - 如何返回对象数组属性的总和而不是它们的 double ?

java - Struts 2.5.5支持Java 1.6吗