Java -for循环只重复最后一个值

时间:2012-03-30 03:25:10

标签: java arrays for-loop

我有一个数组来保存DB的值。如果我尝试使用某些默认数据,它可以正常工作但如果我从DB获得值,它只显示最后一个值。

默认数据;

MenuList menu_data [] = new MenuList[]{};
menu_data  = new MenuList[]
{
new MenuList("test","test1") ,      
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") ,  
new MenuList("test","test1") 
};

DB的值,

MenuList menu_data [] = new MenuList[]{};
List<Menu> profiles = db.getAllContacts();
for (Menu cn : profiles) {
menu_data  = new MenuList[]
{
new MenuList(cn.getmenuname(), cn.getmenuprice())  
};
}

如何从数据库中获取所有值。

3 个答案:

答案 0 :(得分:3)

每次进行循环时,都会创建一个新数组。因此,只有最后一个值可用。请尝试以下

menu_data  = new MenuList[profiles.size()];

for (int i = 0; i < menu_data.length; i++) {
    Menu cn = profiles.get(i);
    menu_data[i] = new MenuList(cn.getmenuname(), cn.getmenuprice());  
}

答案 1 :(得分:2)

List<Menu> profiles = db.getAllContacts();
int numProfiles = profiles.size();
MenuList[] menu_data = new MenuList[numProfiles];
for (int i = 0; i < numProfiles; i++) {
    Menu cn = profiles.get(i);
    menu_data[i] = new MenuList(cn.getmenuname(), cn.getmenuprice());
}

答案 2 :(得分:2)

试试这个:

List<MenuList> menulists = new ArrayList<MenuList>();
for (Menu cn : db.getAllContacts())
    menulists.add(new MenuList(cn.getmenuname(), cn.getmenuprice()));
MenuList[] menu_data = menulists.toArray(new MenuList[0]);