Arraylists和条件

时间:2015-12-21 15:08:59

标签: java arraylist conditional

我有一个Arraylist,我用字符串填充。

ArrayList<String> urls = new ArrayList<>();

以下是其中一个字符串的示例。

http://asite.com/some-stuff-qua-sta/api/xml

然后我创建了一个Iterator来循环遍历它们。这个问题是我在数组中有我不想要的项目。一个例子是:

http://asite.com/some-stuff-test-sta/api/xml

因为它包含“test”,我想从Arraylist中排除它,所以我添加了这样一行。

urls.remove();

这不起作用所以我在填充Arraylist时尝试添加类似的内容。

!e.getElementsByTagName("name").item(0).getTextContent().contains("test");

这也行不通。有人可以建议一个好的方法吗?

3 个答案:

答案 0 :(得分:2)

在Java 8中,removeIf方法已添加到Collection。如果Predicate包含String,您可以传递"test"来测试urls.removeIf(string -> string.contains("test")); 以删除这些元素。

gridView1.CustomDrawColumnHeader += 
    new ColumnHeaderCustomDrawEventHandler(gridView1_CustomDrawColumnHeader);

void gridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e) 
{
    if (e.Column == _yourColumn)
    {
        e.Appearance.BackColor = Color.Red;
        e.Handled = true;
    }
}

答案 1 :(得分:1)

您可以使用Iterator来迭代并从列表中删除元素。由于我不清楚删除的条件是什么,这里有一个例子:

    final List<String> someList = new ArrayList<>();
    someList.add("One");
    someList.add("Two");
    someList.add("Three");
    someList.add("Four");
    final Iterator<String> iterator = someList.iterator();
    while(iterator.hasNext()) {
        final String curString = iterator.next();
        if (curString.startsWith("T")) {
            iterator.remove();
        }
    }
    System.out.println(someList);

答案 2 :(得分:0)

您需要从Iterator中删除元素,而不是直接从List其他方面删除ConcurrentModificationException

来自javadoc

  

此类的迭代器和listIterator返回的迭代器   方法是快速失败的:如果列表在结构上被修改那么   创建迭代器后的时间,以任何方式除外   Iterator自己删除或添加方法迭代器将抛出一个   ConcurrentModificationException的