java - 从 Java 中的 Arraylist 中删除特定元素?

标签 java arraylist

我有一个包含(字符串-)数组的数组列表。现在我希望能够从 Arraylist 中删除特定元素。

这是一个数组列表示例:

0:  [Name, , , ]
1:  [Telefon, \(\d+\) \d+, DAFAE8, FF6262]
2:  [E-Mail, ^[a-zA-Z0-9]+(?:(\.|_)[A-Za-z0-9!#$%&'*+/=?^`{|}~-]+)*@(?!([a-zA-Z0-9]*\.[a-zA-Z0-9]*\.[a-zA-Z0-9]*\.))(?:[A-Za-z0-9](?:[a-zA-Z0-9-]*[A-Za-z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$, DAFAE8, FF6262]
3:  [Company, , , ]
4:  [Test, , , ]
5:  [Test2, , , ]
6:  [Test3, , , ]

现在我想删除第 5 个元素(包含 Test2 的数组)。我该如何实现这一目标?

我已经尝试过以下操作:

public static List<String[]> removeSpecificElements(List<String[]> list, int i){
    list.remove(new Integer(i));
    return list;
}

这个不会抛出任何类型的异常,但也不起作用。

public static List<String[]> removeSpecificElements(List<String[]> list, int i){
    list.remove(i);
    return list;
}

这个会抛出 ArrayIndexOutOfBounds。

public static List<String[]> removeSpecificElements(List<String[]> list, int i){
    Iterator<String[]> itr = list.iterator();
    itr.next();
    for (int x = 0; x < i; x++){
        itr.next();
        System.out.println(itr);
    }
    itr.remove();
    return list;
}

这个总是删除第一个元素。

你能帮我一下吗?

最佳答案

Now I want to delete the 5th element (the array which includes Test2). How do I accomplish that?

您需要使用

list.remove(i); // where i = 5 - 1, as the first element is 0.

如果你这样做

list.remove(new Integer(i));

它将查找您刚刚创建的对象,该对象不存在于列表中,因此正如您所说,它什么也不做。

简而言之,不要将 intInteger 混淆,因为它们是不同的类型。

理想情况下,API 应该有一个不同的方法,例如 removeAt(int) 来消除这种潜在的困惑来源,但现在更改它为时已晚。

<小时/>

这什么时候能起作用?考虑以下因素。

List<Integer> ints = new ArrayList<>();
ints.add(4);

List<MyType> list = (List) ints; // it works but don't do this.
boolean wasRemoved = list.remove(new Integer(4)); // true!!

关于java - 从 Java 中的 Arraylist 中删除特定元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35622803/

相关文章:

java - 如何阅读此文本文件并搜索类(class)名称 Java?

java - 需要帮助来理解这个 for 循环的作用及其工作原理

java - 程序对 2d ArrayList[][] 使用未经检查或不安全的操作

javascript - 如何在 javascript 中将项目转换为键/值对对象?

java - 如何更新 ArrayList 中指定字符串的项目

java - SonarQube:如何将多个质量配置文件应用于一个项目?

java - sleep 线程会失去监视器锁的所有权吗?

java - 将 List<String> 直接转换为 List<Integer>

java - 如何在我的 Java Web 服务客户端请求中使用 SSL/TLS 握手

java - 如何使用不同长度为 CSV 中的值分配索引。 ( java )