Pra*_*Dev 4 java oop arraylist
这里有两个类,查询语句和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;
}
}
Run Code Online (Sandbox Code Playgroud)
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--;
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题不是来自你的循环,而是来自你的班级QuerySentence.您正在创建静态对象,这意味着您不会为类的不同实例创建不同的字段,但该类将只具有它们的唯一副本.那么这里发生了什么,你将这些价值分配给你的班级QuerySentence:
QuerySentence qs1 = new QuerySentence("What state produces the best lobster to eat","LOCATION");
Run Code Online (Sandbox Code Playgroud)
然后用这个删除它:
QuerySentence qs2 = new QuerySentence("What is Dick Clark's birthday","DATE");
Run Code Online (Sandbox Code Playgroud)
当你ArrayList在你的循环中添加两个对象时,你将打印两个结果.但只有qs2的结果.static从您的字段声明中删除它将正常工作:
public String query;
public String label;
Run Code Online (Sandbox Code Playgroud)
添加时,您无需索引查询语句.
doclist.add(qs1);
doclist.add(qs2);
Run Code Online (Sandbox Code Playgroud)
而且你也可以改善你的循环.你可以这样做:
ArrayList<QuerySentence> doclist = new ArrayList<QuerySentence>();
// some code...
for(QuerySentence q : doclist)
{
System.out.println("In loop : " + q.label + q.query);
}
Run Code Online (Sandbox Code Playgroud)
还请记住Java约定:您的类应以大写(Stackov)开头.如果你还对封装工作,这是更好地宣布你的领域private,创造getters和setters他们.有了这个你for-statement应该看起来像这样:
for(QuerySentence q : doclist)
{
System.out.println("In loop : " + q.getLabel() + q.getQuery());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24273 次 |
| 最近记录: |