这里有两个类,查询语句和Stackov。arraylist用于存储查询语句类的对象。但是最近添加的对象覆盖了前一个对象。如何添加对象以使它们不被覆盖?
QuerySentence.java
public class QuerySentence {
public static String query;
public static String label;
public QuerySentence(){
}
public QuerySentence(String query,String label){
this.query = query;
this.label = label;
}
}
Stackov.java
package QueryClassifier;
import java.util.ArrayList;
public class stackov {
public static void main(String args[])
{
QuerySentence qs1 = new QuerySentence("What state produces the best lobster to eat","LOCATION");
QuerySentence qs2 = new QuerySentence("What is Dick Clark's birthday","DATE");
ArrayList<Object> doclist = new ArrayList<Object>();
doclist.add(0,qs1);
doclist.add(1,qs2);
int size = doclist.size();
while(size>0)
{
QuerySentence qs3 = (QuerySentence) doclist.get(size-1);
System.out.println("\nin loop : " + qs3.label + qs3.query);
size--;
}
}
}
问题不是来自您的循环,而是来自您的类querystenting
。您正在创建静态对象,这意味着您不会为类的不同实例创建不同的字段,但类将只有它们的唯一副本。这里所发生的事情是,您将这些值赋给您的类QueryStenting
:
QuerySentence qs1 = new QuerySentence("What state produces the best lobster to eat","LOCATION");
然后抹去这个:
QuerySentence qs2 = new QuerySentence("What is Dick Clark's birthday","DATE");
当您将两个对象添加到arraylist
中时,当然在循环中您将打印两个结果。而仅限于QS2中的结果。从字段声明中删除static
,它将运行良好:
public String query;
public String label;
在添加时不需要索引查询语句。
doclist.add(qs1);
doclist.add(qs2);
您还可以改进您的循环。你可以这样做:
ArrayList<QuerySentence> doclist = new ArrayList<QuerySentence>();
// some code...
for(QuerySentence q : doclist)
{
System.out.println("In loop : " + q.label + q.query);
}
还请记住Java惯例:您的类应该以大写(stackov
)开头。如果您还研究封装,那么最好声明字段private
,并为它们创建getters
和setters
。这样,您的for-statement
应该如下所示:
for(QuerySentence q : doclist)
{
System.out.println("In loop : " + q.getLabel() + q.getQuery());
}
问题内容: 我想向中添加一个对象,但是每次我向具有3个属性的新对象添加时,都会出现错误。 在这里,我正在尝试创建其对象并将其传递给的类。 问题答案: 创建对象时需要使用运算符 要不然 并且您的构造函数不应包含。否则它将成为您班上的一个方法。
我想编写一个名为addNewPhone(Phone newPhone)的方法,将一个Phone添加到一个电话数组列表中; 电话类别: 车间类别: 主要类: 我知道我需要返回ArrayList,并且我需要在这个方法中接收Phone type对象,然后它应该返回ArrayList和一个新的phones,但我不知道为什么它不起作用。 Eclipse显示我符合的方法:“newPhone无法解析或未归档”。
我的任务是实现一个蛮力算法来输出一些n的整数[1,2,…, n]的所有排列。但是,我似乎在将ArrayList对象添加到HashSet时遇到了一些问题: 我发现对“nextPer的连续调用确实找到了所有排列,但是我不明白当我将排列添加到HashSet“allPer的排列”时会发生什么。我在n=3的情况下运行时得到的输出是这样的: [[3, 2, 1, 1, 2, 1, 1, 3, 1, 2], [
我需要做一个方法,可以添加这些数据类型到一个arraylist内的cart类。但如果我写 它只会接收推车类型的数据,所以我不能输入食物或饮料,或Miscs类型的数据,甚至有相同的细节,如名称和价格。
问题内容: 我有一个特定的类C的arraylist。 C类具有两个属性,即。 现在,当我将C类型的对象添加到ArrayList myList时,我想检查列表中是否已经存在对象,且其str1和str2的值与该对象的参数值(str1和str2)相匹配我要补充。 有什么有效的方法可以执行此操作,而不必每次都遍历完整列表并检查参数之间是否匹配? 问题答案: 您需要重写C类中的方法。 例如 然后,可以调用m
问题内容: 我有以下Java代码,其中我试图将ArrayList复制到另一个ArrayList。 我希望“列表”数组采用以下格式: 但是从上面的代码中,“ list”数组输出看起来像这样: 我想您可能已经注意到了差异。我无法达到预期格式的结果。请建议我任何解决方案!提前致谢!! 问题答案: 然后,你需要的: 请注意,已更改为。在Java命名约定中,变量以小写字母开头。类以大写字母开头。