gpt4 book ai didi

java - 如何通过链接列表中的属性删除对象?

转载 作者:行者123 更新时间:2023-11-29 08:24:40 24 4
gpt4 key购买 nike

如何删除链表中的对象。我有一个包含 studentId 和 studentName 的类(class)帐户。我在列表中输入对象,但当我尝试删除时,我不知道该怎么做。因为每次从列表中间删除一个元素时,它都会被组织起来,这意味着索引会发生变化。那么如何获取 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 的索引。重新排列。所以我不知道该怎么做,你能帮帮我吗?

最佳答案

  1. 如果您不需要保留对您删除的对象的引用,您可以

    linkedAccount.removeIf(acc -> acc.getStudentID() == accountNumber);
  2. 如果您想保留对您删除的元素的引用,您可以

    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;
    }
    }
  3. 请注意,在大多数情况下,基本上一个ArrayList 就足够了 When to use LinkedList over ArrayList in Java?

关于java - 如何通过链接列表中的属性删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54099895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com