对ArrayList进行排序,使某些数字先行,然后保留顺序

时间:2015-05-25 01:06:44

标签: java sorting arraylist

public static ArrayList<ArrayList<HSSFCell>> newTogether(ArrayList<ArrayList<HSSFCell>> sheetData) {
    ArrayList<ArrayList<HSSFCell>> temporary = new ArrayList<ArrayList<HSSFCell>>();
    for(int i = 0; i < sheetData.size(); i++) {
        ArrayList<HSSFCell> list = sheetData.get(i);
        if (list.get(3).getCellType() == Cell.CELL_TYPE_NUMERIC) {
            if(Integer.parseInt(list.get(3).getStringCellValue()) > 100) {
                temporary.add(list);
                sheetData.remove(i);
                i--;
            }
        }
    }
    for(int i = 0; i < sheetData.size(); i++) {
        ArrayList<HSSFCell> list = sheetData.get(i);
        temporary.add(list);
    }
    return temporary;
}

我想用我的代码做的是让2D ArrayList取出任何大于100的数字并将它们放在ArrayList的开头,同时保留剩余元素的顺序。但是,此代码只返回原始顺序的ArrayList,如果我向println添加if,我什么也得不到。有人能指出我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过将println放在第一个之前if if检查getStringCellValue()返回的内容?

顺便说一句。由于根据API文档保证Collections.sort稳定,您可以使用它。应该比你的方式更快。<​​/ p>

这可能看起来像这样

[
    'attached' => [1, 2, 3],
    'detached' => [4, 5],
    'updated' => [6]
]