如何在某个字符串之前从数组列表中删除所有名称?

时间:2014-01-15 01:44:33

标签: java collections arraylist

在数组列表中,如果你添加一个字符串,然后对它进行排序,然后想删除该字符串之前的所有内容,你会做什么?

5 个答案:

答案 0 :(得分:4)

获取新添加元素的索引。使用此索引获取子列表并将子列表传递给removeAll方法:

<强>卸下

//addition = newly added String     
list.removeAll(new ArrayList<String>(list.subList(0,list.indexOf(addition))));

完整示例

public class ArrayListSortDelete {
    public static void main(String[] args) {
        String addition = "BB";
        List<String> list = new ArrayList(Arrays.asList(new String[] { "A", "B", "C", "D" }));
        list.add(addition);
        Collections.sort(list);

        System.out.println("Before");
        for (String s : list) {
            System.out.println(s);
        }

            //new ArrayList<String>() avoids concurrent modification.
        list.removeAll(new ArrayList<String>(list.subList(0,list.indexOf(addition))));

        System.out.println("After:");
        for (String s : list) {
            System.out.println(s);
        }

    }

}

答案 1 :(得分:3)

这应该没问题

ArrayList<String> yourList;
String query;    

int index = yourList.indexOf(query);
for (int a=0; a<index; a++) {
    yourList.remove(0);
}

答案 2 :(得分:0)

遍历列表并继续删除元素,直到找到String。

for (int i=0; i<list.size(); i++) {
  if (!(list.get(i).equal("String"))) {
    list.remove(0);
  }
}

答案 3 :(得分:0)

您应该可以使用indexOfsubList来实现这一目标。

考虑阅读链接文档以获取更多信息。

代码示例:

list.subList(0, list.indexOf(searched_string)).clear();

答案 4 :(得分:0)

虽然Kevin Bowersox给出了答案,但我在这里给你一个替代方案:)

解释问题的另一种方法是:

给定数组列表和新元素,删除数组列表中小于新元素的所有元素,然后将新元素放入列表并对列表进行排序。

这是一种方式:

ArrayList<String> oList = .....;
List<String> newList = new LinkedList<String>(); // tmp list to store the result
String newElement = ...;

for (String s: oList) {
    if (s.compareTo(newElement) >= 0) { //  s >= newElement
        newList.add(s);
    }
}
newList.add(newElement);

// put the result back to oList
oList.clear();
oList.putAll(newList);

// sort the result
Collections.sort(oList);

// now oList contains what you want

您甚至可以在没有临时列表帮助的情况下在oList中就地执行此操作(但删除arrayList效率不高)。