当前位置: 首页 > 知识库问答 >
问题:

Java列表删除项而不执行任何操作

邢勇
2023-03-14
private void updateCommentIfNeeded() {
    List<AccessRequest> accessRequestList = getAllRequest();
    List<AccessRequest> commentsList = getCommentsListProcessedManually(accessRequestList);
}

public List<AccessRequest> getCommentsListProcessedManually(List<AccessRequest> accessRequests) {

    accessRequests.removeIf(ar -> !ar.getComment().equals("To be processed manually"));

    if (accessRequests.size() != 0) {
        SQLServerConnection sqlServerConnection = new SQLServerConnection(sqlServerUrl);
        accessRequests.removeIf(ar -> !sqlServerConnection.emailExists(ar.getEmail()));
    }
    return accessRequests;
}
  • 我的第一个列表中有3个对象,但只有一个包含必需的注释
  • 两个列表都以包含包含注释的唯一对象结尾

如果有人有主意的话,我就有点迷路了!

共有1个答案

王建华
2023-03-14

您的方法getCommentsListProcessedManual修改您正在传递的列表。我相信您的操作假设是将列表作为参数传递,以某种方式创建了列表的副本,而实际发生的是通过值传递对列表的引用。

有几种方法可以解决这个问题,但最简单的方法是在方法开始时创建输入列表的副本:

public List<AccessRequest> getCommentsListProcessedManually(List<AccessRequest> input) {
    List<AccessRequest> accessRequests = new ArrayList<>(input);

    accessRequests.removeIf(ar -> !ar.getComment().equals("To be processed manually"));

    if (accessRequests.size() != 0) {
        SQLServerConnection sqlServerConnection = new SQLServerConnection(sqlServerUrl);
        accessRequests.removeIf(ar -> !sqlServerConnection.emailExists(ar.getEmail()));
    }
    return accessRequests;
}

您还可以为此使用Stream API(使用filter操作),但在这种情况下,这会比较棘手。

 类似资料:
  • 我在一个项目中工作,我需要要求用户输入一个路径来使用jOptionPane保存程序,但我的问题是,如果用户没有在文本中添加任何内容,然后单击取消或确定,将得到一个错误...我试图控制它,检查字符串是否为空()或等于空

  • 我正在尝试通过NIFI从oracle数据库中提取数据。在画布中,我将文件大小为0 KB的“GenerateFlowFile”处理器安排为每5分钟运行一次。这只是为了在成功时触发“executesql”处理器。对于“executeSQL”,我将DB连接池服务设置为DBCPConnectionPool。我输入SQL查询“select*FROM sometable”。我的DBCPConnectionPo

  • 问题内容: 我希望HTML表单在提交后不执行任何操作。 这是不好的,因为它会导致页面重新加载。 基本上,我希望每当按下按钮或有人在键入数据后单击“输入”时都调用ajax函数。是的,我可以删除表单标签并添加,只需从按钮的onclick事件中调用该函数即可,但是我也希望“命中进入”功能而不会引起任何麻烦。 问题答案: 通过在通过“提交”按钮调用的javascript中使用,可以停止提交表单。 基本上,

  • 问题内容: 我正在运行一个Electron项目,一切都很好。但是现在,当我运行package.json中的任何脚本(包括npm start)时,它只是转义了一行而没有执行任何操作。 我的package.json: 我尝试更新NPM,但没有用。当我在其他项目中尝试过时,也不起作用。 提前致谢 问题答案: npm具有配置密钥。它的期望值是布尔值,默认设置为。 可能是由于疏忽而将其设置为。 要/ 的配置

  • 问题内容: 我有两个列表需要合并,第二个列表忽略了第一个列表的重复项。..有点难以解释,所以让我展示一个代码看起来像什么,以及我想要什么的示例。 您会注意到结果具有第一个列表, 包括 其两个“ 2”值,但是second_list也具有附加的2和5值这一事实并未添加到第一个列表中。 通常,对于这样的事情,我会使用集合,但是first_list上的集合会清除它已经具有的重复值。所以我只是想知道什么是实

  • 请注意,在转向您之前,我已经浏览了各种帖子。事实上,我尝试实现中提供的解决方案:基于“notin”条件从数据帧中删除行 我的问题如下。让我们假设我有一个巨大的数据帧,我想删除重复的数据帧。我很清楚我可以使用drop_duplicates,因为这是最快的最简单的方法。然而,我们的老师希望我们创建一个包含重复项ID的列表,然后根据这些值是否包含在上述列表中删除它们。 现在,让我们看看输出: 因此,我得