java - 如何在链接列表中按属性删除对象?
问题描述
如何删除 Linkedlist 中的对象。我有一个带有 studentId 和 studentName 的班级帐户。我在列表中输入了对象,但是当我尝试删除时,我不知道该怎么做。因为每次从列表中间删除一个元素时,它都会被组织起来,这意味着索引会发生变化。那么如何获取 studentId 属性并删除linkedList中的对象。
样本:
LinkedList: Account{studentId = 1, studentName = nome1} = index = 0 ,
LinkedList: Account{studentId = 2, studentName = nome2} = index = 1 ,
LinkedList: Account{studentId = 3, studentName = nome3} = index = 2.
我想要的是用户插入他想要删除的 studentId,我可以做一个搜索和删除该对象的代码。
public Account{
private int studentID;
private String StudentName;
}
public static void main(String[] args){
int accountNumber;
LinkedList<Account> linkedAccount = new LinkedList<>();
Account obj1;
System.out.println("Type the acc number: ");
accountNumber = in.nextInt();
obj1 = linkedAccount.remove(accountNumber);
System.out.println("The " + obj1 + " has been deleted");
}
每次我从中间删除一个对象时,它都会更改linkedList 的索引。重新排列。所以我不知道该怎么做你能帮我吗?
解决方案
如果您不需要保留对您删除的对象的引用,您可以
linkedAccount.removeIf(acc -> acc.getStudentID() == accountNumber);
如果您想保留对您删除的元素的引用,您可以
for (Account acc : linkedAccount) { if (acc.getStudentID() == accountNumber) { obj1 = acc; linkedAccount.remove(acc); break; } } // OR for (int i = 0; i < linkedAccount.size(); i++) { if (linkedAccount.get(i).getStudentID() == accountNumber) { obj1 = linkedAccount.remove(i); break; } }
请注意,在大多数情况下,基本上一个
ArrayList
就足够了 何时在 Java 中使用 LinkedList 而不是 ArrayList?
推荐阅读
- javascript - 如何使用来自一个站点的表单数据登录到另一个站点上的另一个表单?
- sql - 如何在不同的列上连接同一个表
- pandas - 从不同类型的熊猫中去除异常值
- python - 使用 Python 开发 Flask 应用程序时如何自动刷新浏览器?
- c++ - 将凭据从应用程序转发到凭据提供程序
- java - spring 集成 inboundChannelAdapter 一次产生多个消息?
- dart - Dart build runner 生成一个包含内容的 dart 文件
- excel - 如何将活动表移动到 Lotusscript 中的工作表末尾
- python - Python 执行 ssh 命令(SSH 服务器仅用于远程端口转发)并捕获输出
- c++ - C ++ Gtest如何将参数传递给类夹具?