【问题标题】:How to remove a populace from an array list given only its string [duplicate]如何从仅给定字符串的数组列表中删除民众[重复]
【发布时间】:2017-09-10 04:47:11
【问题描述】:
public void addPopulace()
{
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter name");
    String name = sc.next();
    System.out.println("Enter size");
    int size = sc.nextInt();
    System.out.println("Enter X-Coordinate"); 
    int x = sc.nextInt();
    System.out.println("Enter Y-Coordinate"); 
    int y = sc.nextInt();
    Populace p = new Populace(name, size, x, y ); 
    list.add(p);
}

public void removePopulace()
{
    Scanner rmv = new Scanner( System.in );
    System.out.println("Enter populace name to be removed"); 
    String rmvName = rmv.next();
    Populace p = new Populace(rmvName); 
    list.remove(p);
}

第一种方法提示用户输入人口及其所需的特征并将其添加到数组列表中。如何通过仅通过民众的名称提示 iser 来获得第二种移除民众的方法。民众目前的格式如下:
人口 人口大小 x y

【问题讨论】:

  • Java 8:list.removeIf(p -> p.getName().equals(nameToRemove));

标签: java arrays loops


【解决方案1】:

您需要在您的Populace 类中覆盖equals()hashcode(),这样当您调用list.remove() 时,该对象将被删除。

基本上,您的equals() 方法应该提供关于两个Populace 对象如何相等 的逻辑(例如通过它们的namesize)。

public class Populace {

    //add your existing code here

    @Override
    public boolean equals(Object object) {
        //provide logic on how two objects are equal, check name, size, etc..
    }

    @Override
    public int hashCode() {
        //return hashcode
    }

}

【讨论】:

  • 您也可以使用 Lombok 项目来自动执行此操作,因此您不必在制作的每个 pojo 中都执行此操作:projectlombok.org/features/EqualsAndHashCode.html
  • @PeterAdrian 感谢您的链接,但我不建议使用第三方注释来为新开发人员自动生成equals(),因为他们需要先通过自己编写一些内容来理解这个概念
【解决方案2】:

你可以这样做:

for (Populace p: list)
    if (rmvName.equals(p.getName())) {
        list.remove(p);
        break;
    }

【讨论】:

  • 有没有办法用一个while循环来构造它?
  • 当然是@RehanBari
  • 那会是什么样子?
  • @RehanBari 类似Iterator<Populace> i = list.iterator(); while (i.hasNext()) { Populace s = i.next(); ... }
【解决方案3】:

或者只是:

list.removeIf(p -> p.getName().equals(rmvName));

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 2020-05-01
    • 2014-08-02
    • 1970-01-01
    相关资源
    最近更新 更多