限制列表的元素在顶部

时间:2015-03-19 10:12:05

标签: java

我有一个字符串列表,我需要确保一个特定元素始终位于列表中的第一个位置。这是一个例子。假设我的列表包含[sicav action,droits de souscription, famille action ,fcp actions]。我需要确保' famille action'在列表上进一步处理之前,它始终位于第一个位置。

我是这样做的:

/**
 * Force this list to alway keep the constrained value on top
 * @param liste
 * @param constraint
 */
public void doConstrainList(List<String> liste, String constraint) {

    System.out.println("List initial state: " + liste);
    if (!liste.contains(constraint)) {
        return;
    }

    int indexToProcess = liste.indexOf(constraint);

    String keeper = constraint;

    liste.remove(indexToProcess);
    liste.add(0, keeper);

    System.out.println("List state after processing:" + liste);
}

当我使用上面提到的列表示例为相同的约束值调用此方法时,我获得以下结果

method invocation result

所以这是按预期工作的,但我想知道是否有更好的方法来做到这一点。有可能这个名单会继续增加,我不希望这种方法是时间消耗。我使用的是Java 1.6,我不能使用更新的Java版本。谢谢你的帮助

1 个答案:

答案 0 :(得分:1)

我认为您可以通过重构代码来节省一些处理时间:

public void doConstrainList(List<String> liste, String constraint) {

    System.out.println("List initial state: " + liste);
    if (liste.remove(constraint)) {
        liste.add(0, constraint);
    }

    System.out.println("List state after processing:" + liste);
}