2015-04-04 50 views
0

我有一个ArrayList在我的课开始转换/从ArrayList中复制到对象数组

private ArrayList<Dog> dogs; 

这狗是如何在狗类中声明

public Dog(String name, ArrayList<Owner> owners, boolean likeBones, String food, 
     int mealsPerDay); 

我试图找到那些喜欢骨头的狗,并把这条狗变成结果。其余的代码工作正常,包括.getLikesBones()。

Dog[] result = null; 
for (Dog dogSearch : dogs) { 

     if (dogSearch.getLikesBones()){ 
      result =dogSearch; //I know this won't work, just simply showing what I want. 
     } 



    } 
    return result; 
} 

非常感谢您的帮助。

+1

它没有工作不是一个很好的解释你的问题...你是否得到一个nullpointerexception权利?想想看。 – 2015-04-04 16:36:46

+2

听起来像一个功课问题。你可能应该试着去实现你到目前为止所研究的东西。 – RealSkeptic 2015-04-04 16:37:12

回答

1

由于您可能不知道result大小。因此,result应该声明为ArrayList而不是数组。看下面的代码。

List<Dog> result = new ArrayList<>(); 

将搜索值添加到result

for (Dog dogSearch : dogs) { 
    if (dogSearch.getLikesBones()){ 
    result.add(dogSearch); 
    } 
} 
0

您可以使用,而不是使用数组

List<Dog> result = new ArrayList<Dog>(); 
for (Dog dogSearch : dogs) { 
     if (dogSearch.getLikesBones()){ 
      result.add(dogSearch); 
     } 
    } 
    return result; 
} 
+0

非常感谢你的工作。只需要将方法更改为public List 并且必须导入java.util.List; – Unfitacorn 2015-04-04 16:57:14

0

这将是更好,如果你改变Dog[] resultList<Dog> result = new ArrayList<>(),所以你可以不用担心上为固定大小初始化数组添加数据集。

您的代码应该是这样的:

List<Dog> result = new ArrayList<>(); 
for (Dog dogSearch : dogs) { 
    if (dogSearch.getLikesBones()){ 
     result.add(dogSearch); 
    } 
} 
return result; 

如果你仍然需要在return语句返回Dog[]而非List<Dog>,然后调用List#toArray

return result.toArray(new Dog[result.size()]); 
0

你必须做的2种方式这个。您已在代码顶部声明regular array of Dogs

要做到这一点与regular array你需要声明一个int来保存数组的索引,因为没有常规数组的“添加”功能。因此,这将是:

Dog[] result = new Dog[dogs.lenght()]; 
int index = 0; 
for (Dog dogSearch : dogs) { 

     if (dogSearch.getLikesBones()){ 
      result[index] = dogSearch; 
      index++; 
     } 
    } 
    return result; 
} 

以其它方式使用狗的数组列表的“结果”,只是做

arrayList.Add(dogSearch);

+0

未能为结果数组分配内存。 – CandiedOrange 2015-04-04 16:39:33

+0

如何初始化一个数组? – 2015-04-04 16:39:41

+0

hmm ..我认为这是一种声明数组而不指定大小的方法......现在看 – 2015-04-04 16:42:16

0
ArrayList<Dog> result = new ArrayList<Dog>(); 
for (Dog dogSearch : dogs) { 

    if (dogSearch.getLikesBones()){ 
     result.put(dogSearch); 
    } 

} 
return result; }