Java 使用lambda表达式RemoveIf只删除一个整数

Java 使用lambda表达式RemoveIf只删除一个整数,java,Java,我只需要删除整数数组列表中出现的一个整数。我的代码现在删除所有具有特定值的整数 list.removeIf(s -> s.equals(data)); 例如,如果我有: ArrayList<Integer> i = new ArrayList<Integer>(); i.add(1); i.add(1); i.add(3); i.add(5); 我只想删除第一个1或第二个1。并非两者都有。解决方案 使用Listremove方法。这正是它制作的目的,来自: 如果

我只需要删除整数数组列表中出现的一个整数。我的代码现在删除所有具有特定值的整数

list.removeIf(s -> s.equals(data));
例如,如果我有:

ArrayList<Integer> i = new ArrayList<Integer>();

i.add(1);
i.add(1);
i.add(3);
i.add(5);
我只想删除第一个1或第二个1。并非两者都有。

解决方案 使用Listremove方法。这正是它制作的目的,来自:

如果指定元素是可选操作,则从此列表中删除该元素的第一个匹配项。如果此列表不包含该元素,则它将保持不变。[……]

删除Int 但是,这里可能有一个小问题。您的数据类型是Integer,数据可能是int类型。并且已经有一个具有签名Listremoveint的方法,它将删除给定索引处的元素,而不是元素本身

您可以通过将数据显式装箱为整数(实际上已存储在列表中)来绕过此问题:

boolean wasRemoved = list.remove((Integer) data);
或者直接将INTER类型的数据变量改为INTER。

解决方案 使用Listremove方法。这正是它制作的目的,来自:

如果指定元素是可选操作,则从此列表中删除该元素的第一个匹配项。如果此列表不包含该元素,则它将保持不变。[……]

删除Int 但是,这里可能有一个小问题。您的数据类型是Integer,数据可能是int类型。并且已经有一个具有签名Listremoveint的方法,它将删除给定索引处的元素,而不是元素本身

您可以通过将数据显式装箱为整数(实际上已存储在列表中)来绕过此问题:

boolean wasRemoved = list.remove((Integer) data);

或者直接将数据变量的类型改为整数而不是int。

只需从列表中使用remove方法。removenew Integerdata,通过实现,您可以看到它删除了第一个元素,然后退出:

for (int index = 0; index < size; index++)
    if (o.equals(elementData[index])) {
         fastRemove(index);
         return true;
    }

只需使用list.removenew Integerdata中的remove方法,通过实现您可以看到它删除了第一个元素,然后退出:

for (int index = 0; index < size; index++)
    if (o.equals(elementData[index])) {
         fastRemove(index);
         return true;
    }

要求家庭作业帮助的问题必须包括你迄今为止为解决问题所做工作的总结,以及你解决问题的困难的描述。你对removeIf有什么期望?当然,它会删除该谓词在其文档中解析为true的所有元素。@Zabuza呃,这就是我到目前为止所做的吗?这是一个lambda表达式。可能重复:您是否在列表界面中找到任何其他以remove开头的方法,这些方法只删除一个事件?请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的摘要,以及您在解决问题时遇到的困难的描述,.你期望从removeIf那里得到什么?当然,它会删除该谓词在其文档中解析为true的所有元素。@Zabuza呃,这就是我到目前为止所做的吗?这是一个lambda表达式。可能重复:您在列表界面中找到任何以remove开头的方法,它们只删除一个匹配项吗?因为它是Int,OP需要强制转换该值,否则它将按索引删除。@Sedrick True。不幸的是,这一信息后来被添加到问题中。我将更新我的答案。强制转换为整数是否等于Integer.valueOf?我只是好奇整数值是否可以在强制转换后缓存。@JacobG。好问题。Integer.valueOf显然使用缓存请参见。装箱到整数也可以查看装箱的值p是否为[…]范围内的整数,包括-128到127[…]。a==b总是这样。另请参见。由于它是Int,OP需要强制转换该值,否则它将按索引删除。@Sedrick True。不幸的是,这一信息后来被添加到问题中。我将更新我的答案。强制转换为整数是否等于Integer.valueOf?我只是好奇整数值是否可以在强制转换后缓存。@JacobG。好问题。Integer.valueOf显然使用缓存请参见。装箱到整数也可以查看装箱的值p是否为[…]范围内的整数,包括-128到127[…]。a==b总是这样。另见。