2013-03-11 114 views
1

我有这样的代码,它工作正常:动态对象添加到阵列

News news_data[] = new News[] { 
new News("1","news 1","this is news 1"), 
new News("2","news 2","this is news 2"), 
new News("2","news 1","this is news 2"), 
}; 

在这段代码中我添加3个新的对象,但我必须动态地添加他们在循环中。我怎样才能做到这一点?事实上,我不明白这个数组结构。请解释这段代码给我,如果你可以把它简单

我试过,但它不工作:

News news_data[]; 
    for(i=1;i<3;i++){ 
     news_data=new News[] { 
      new News("1","news 1","this is news 1"), 
      new News("2","news 2","this is news 2"), 
      new News("2","news 1","this is news 2"), 
     }; 
    } 

回答

5

有一个在Java没有动态分配,Lists在这里这样的目的。 例如,ListArrayListLinkedList ...

这样使用:

// Declaring, initializing the list 
ArrayList<News> list = new ArrayList<News>(); 
// Adding a news : 
News news = new News("1","news 1","this is news 1"); 
list.add(news); 

如果你已经有了一个News阵列(在你的榜样news_data),您可以快速填写您的列表开始:

for(News n : news_data) { list.add(n); } 
4

使用List。这就是解释是:

List<News> news = new ArrayList<News>(); 
news.add(new News(...)); 
0
News news_data[] = new News[3]; // defining the size of Array to 3 
new_data[0] = new News("1","news 1","this is news 1"), 
new_data[1] = new News("2","news 2","this is news 2"), 
new_data[2] = new News("2","news 1","this is news 2"), 

,但更好的方法将b e传给用户ArrayList。它们用于动态结构。

List<news> news_data = new ArrayList<News>(); 
news_data.add(new News("1","news 1","this is news 1")); 
news_data.add(new News("2","news 2","this is news 2")); 
news_data.add(new News("2","news 1","this is news 2")); 
1

如果您主要在列表中间添加和删除对象(顺序很重要),最好使用LinkedList。如果经常使用随机访问,ArrayList将是更好的选择,在这种情况下,您可以在O(1)时间内将元素添加到末尾。见http://en.wikiversity.org/wiki/Java_Collections_Overview