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

ArrayList不打印移除的对象

花阳秋
2023-03-14
public void delete (int coeff, int expo)
{
  for (int i = 0; i<terms.size(); i++)
  {
      Term current = terms.get(i);
      terms.remove(current.getCoeff());
      terms.remove(current.getExpo());
  }

}
public static void main(String[] args) throws IOException
{
    // TODO code application logic here
    Polynomial polyList = new Polynomial();



    Scanner inFile = new Scanner(new File("operations2.txt"));

    while(inFile.hasNext())
    {
       Scanner inLine = new Scanner(inFile.nextLine());

       String insert = inLine.next();

        if(insert.equals("INSERT"))
        {

           int coeff = inLine.nextInt();
           int expo = inLine.nextInt();            
           polyList.insert(coeff, expo);
        }
        if(insert.equals("DELETE"))
        {
            int coeff = inLine.nextInt();
            int expo = inLine.nextInt();
            polyList.delete(coeff, expo);
        }
    }
     System.out.println(polyList.toString());
   }
}

编辑:这是scanner类正在读取的。txt文件的示例:

INSERT 3 2
INSERT 4 4
INSERT 1 6
INSERT 2 0
INSERT 5 2
INSERT 6 3
PRODUCT
DELETE 3 2
INSERT 2 7
DELETE 4 4
INSERT 4 10

编辑:以下是术语类:

class Term
{
//instance vars
private int coefficient;
private int exponent;


 public Term(int coeff, int expo)
 {
  coefficient = coeff;
  exponent = expo;

 }
 public int getCoeff()
 {
   return coefficient;
 }
 public int getExpo()
 {
   return exponent;
 }
 @Override
 public int hashCode()
 {
   return  coefficient + exponent;
 }

   @Override
   public boolean equals(Object o)
   {

     if (!(o instanceof Term))
     {
       return false;
     }
     Term t = (Term)o;
     return coefficient == t.coefficient && exponent == t.exponent;
   }
}

共有1个答案

轩辕嘉平
2023-03-14

如果delete()方法试图删除具有指定系数的Twrm,建议使用以下方法:

  1. 重写equals()方法以返回true,如果参数是具有相同系数和指数的项
  2. 重写hashcode()方法以返回基于相同两个值的哈希值

由于equals()方法应该进行值比较,这样的实现是非常合理的。

terms.remove(new Term(coeff, expo));
// in the Term class
@Override
public boolean equals(Object o) {
    if (!(o instanceof Term)
        return false;
    Term t = (Term)o;
    return coeff == t.coeff && expo == t.expo;
}
@Override
public int hashCode() {
    return 31 * coeff + expo;
}
 类似资料:
  • 我已经创建了几个对象,我想在ArrayList中只打印对象的一个参数: 我要打印:

  • 我知道有人问过这个问题,但我不能使用它的解决方案来做我想做的事情,我的问题是每次我从函数调用并输入一个Id,它总是告诉我Id被删除,即使我输入了一个从未输入的Id,它仍然打印相同的任何提示和帮助,将不胜感激:)注意:我不想在其中使用ArrayList这里是我的代码:

  • 我目前面临的一个问题是,我有一个的问题答案,而我正试图将每个答案打印到一个JLabel,因为这将显示添加到题库中的问题。 问题是它只会打印一个答案,并且可能有5个答案存储在数组中。它正在将它打印到控制台我尝试将放在for循环内部和外部。 我这样做是最好的方法吗?

  • 问题内容: 我如何在arraylist“列表”中打印元素“ e”? 问题答案: 您是要打印整个列表还是要遍历列表的每个元素?两种打印您的类有意义的东西的方法都需要重写该类的方法(如其他答案所述)以返回有效结果。 此代码的输出是:

  • 使用 Photoshop,您可以打印任何兼容的 3D 模型,而无需担心 3D 打印机的限制。在准备打印时,Photoshop 会自动使 3D 模型防水。Photoshop 还会生成必要的支撑结构(支架和底座),以确保您的 3D 打印能够成功完成。 准备打印 3D 对象 选择“窗口”>“工作区”>“3D”以切换到 3D 工作区。 在 Photoshop 中打开 3D 模型。如果需要,请在打开 3D

  • 问题内容: 我有成员类的简单ArrayLists: 会员等级: 朋友的ArrayList包含所有用户朋友。我只希望从好友列表中删除组成员(如果存在): 但这对列表没有任何帮助… 查看日志语句,该朋友实际上确实出现在列表中。 为什么不起作用? 问题答案: 如何确定2个成员相等?我猜它们是否具有相同的ID,您认为它们相等,但是Java希望它们成为内存中的完全相同的引用,而事实并非如此。要更正此问题,您