Java ArrayList.replaceAll()方法详解

培训教学 潘老师 7个月前 (10-10) 174 ℃ (0) 扫码查看

在 Java 中,ArrayList.replaceAll() 方法仅保留此列表中存在于指定方法参数集合中的元素。其余所有元素都从列表中移除。这个方法恰好与 removeAll() 方法相反。

1.ArrayList.replaceAll() API

replaceAll() 方法接受一个类型为 UnaryOperator 的单个参数。UnaryOperator 接口是一个具有名为 apply() 的单个抽象方法的函数接口,该方法返回与操作数相同类型的结果。我们通常在 lambda 表达式中看到 UnaryOperator 以形如 ‘x-> 对 x 进行某些操作’ 的方式工作。

public void replaceAll(UnaryOperator<E> operator);
  • 方法参数:UnaryOperator 表达式。
  • 方法返回:void
  • 方法可能抛出:如果在 replaceAll() 未完成时修改了列表,则可能抛出 ConcurrentModificationException

2.ArrayList.replaceAll() 示例

下面的 Java 程序使用 replaceAll() 方法使用 lambda 表达式将所有列表项更改为小写。

2.1. 使用内联表达式

我们可以在只需执行单个语句的情况下使用内联 lambda 表达式。

ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println(alphabets); //[A, B, C, D, E]
alphabets.replaceAll( e -> e.toLowerCase() );
System.out.println(alphabets); //[a, b, c, d, e]

2.2. 自定义 UnaryOperator 的实现

创建一个实现 UnaryOperator 的新类,以在数组列表的每个元素上执行更复杂的逻辑。

class MyOperator implements UnaryOperator<String> {
  @Override
  public String apply(String t) {
    //自定义代码逻辑
    return t.toLowerCase();
  }
}

现在,我们可以如下使用 MyOperator

ArrayList<String> alphabets = new ArrayList<>(Arrays.asList("A", "B", "C", "D", "E"));
System.out.println(alphabets); //[A, B, C, D, E]
alphabets.replaceAll( new MyOperator() );
System.out.println(alphabets); //[a, b, c, d, e]

这就是 Java 中的 ArrayList.replaceAll() 方法的全部内容。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/teach/9402.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】