Java 将ArrayList返回到字符串
我已经设法将ArrayList值放入字符串中,当我在控制台中打印出字符串时,一切正常,它获取所有信息,但当我返回字符串时,它只显示最后一个元素 e、 g。 有3个车库Java 将ArrayList返回到字符串,java,string,arraylist,return,Java,String,Arraylist,Return,我已经设法将ArrayList值放入字符串中,当我在控制台中打印出字符串时,一切正常,它获取所有信息,但当我返回字符串时,它只显示最后一个元素 e、 g。 有3个车库 BMW Garages Mercedes Garages Toyta Garages 当我返回它时,它只显示最后一个: Toyta Garages 以下是我正在使用的代码: private String arrayListToString() { NepGarazasCtr garCtr = new NepGaraza
BMW Garages
Mercedes Garages
Toyta Garages
当我返回它时,它只显示最后一个:
Toyta Garages
以下是我正在使用的代码:
private String arrayListToString()
{
NepGarazasCtr garCtr = new NepGarazasCtr();
ArrayList<NepGarazas> gautGar = garCtr.gautVisusGarazus();
String nepGar = "";
for(NepGarazas npGar: gautGar)
{
nepGar = npGar.getGarazoPav();
System.out.println(nepGar);
//System.out.println(Arrays.toString(nepGar));
}
return nepGar;
}
所以我的问题是:如何返回整个字符串,而不仅仅是最后一个元素?还是不可能?我想把字符串放在JComboBox中
谢谢。基本上,问题是您试图返回单个字符串,而不是实际的字符串数组。因此,您应该实际创建一个数组,并将其返回到String[]变量,而不仅仅是一个属性。您的解决方案可以使用foreach中的收益率在C中工作,但在这种情况下不行。因此,这里有一个简单的解决方案,虽然不是最好的解决方案,但我创建了一个新列表,而不是创建一个大小与gautGar大小相同的数组,我将把它附加到末尾:
private String[] arrayListToString()
{
NepGarazasCtr garCtr = new NepGarazasCtr();
List<NepGarazas> gautGar = garCtr.gautVisusGarazus();
List<String> stringList = new ArrayList<String>();
for(NepGarazas npGar: gautGar)
{
stringList.add(npGar.getGarazoPav());
System.out.println(nepGar);
//System.out.println(Arrays.toString(nepGar));
}
return stringList.toArray(new String[stringList.size()]);
}
...
String[] array = arrayListToString();
还是就这么做
private String[] arrayListToString()
{
NepGarazasCtr garCtr = new NepGarazasCtr();
List<NepGarazas> gautGar = garCtr.gautVisusGarazus();
String[] stringArray = new String[gautGar.size()];
for(int i = 0; i < gautGar.size(); i++)
{
NepGarazas npGar = gautGar.get(i);
stringArray[i] = npGar.getGarazoPav();
System.out.println(nepGar);
}
return stringArray;
}
你说它可以很好地打印数组,所以System.out.printlnnepGar;你想怎么做就怎么做。我认为您唯一的问题是,在每个循环中,您都将整个字符串nepGar设置为当前元素,这意味着在最后一次迭代中,字符串将是最后一个元素的值 不是每次都将该字符串设置为元素,而是附加每个元素,这意味着最后一个元素仍然是字符串的一部分,但您只是在添加它。我想你只是想改变这一行:
nepGar = npGar.getGarazoPav();
为此:
nepGar += npGar.getGarazoPav() + "\n";
您想在JComboBox中设置一些字符串。好的,您可以简单地使用DefaultComboxModel。
注意:下面的代码使用Java7中的菱形运算符,如果使用的是Java和旧版本,则应更改此运算符
String[] stringArray = arrayListToString() ;
DefaultComboBoxModel<String> comboBoxModel = new DefaultComboBoxModel<>(stringArray);
JComboBox<String> comboBox = new JComboBox<>(comboBoxModel);
您可能也应该更改该方法的名称,类似ArrayListToStringAray的名称现在应该更合适:尝试更多用户可以理解的简化英文变量名虽然我也会让他使用StringBuffer,但我认为如果他需要JComboBox,只有当它们都是字符串[]中的一个单独字符串,而不是带有换行符的单个blob时,它们才是单独的元素。@Zhuinden StringBuffer在回答此类问题时完全没有必要。他们只是把人搞糊涂了。但是,是的,你在他可能需要的方面是对的,但是我刚刚回答了他特别要求返回字符串的问题。我宁愿向他们展示正确的做法,这样他们以后就不会犯愚蠢的错误,因为per+=在循环中使用字符串是一个非常糟糕的做法,也是一个巨大的性能杀手!我不推荐这种做法@SeanPatrickFloyd巨大的性能杀手?他正在遍历一个包含三个元素的ArrayList。说真的,在这种简单的情况下,它什么也做不了。
String[] stringArray = arrayListToString() ;
DefaultComboBoxModel<String> comboBoxModel = new DefaultComboBoxModel<>(stringArray);
JComboBox<String> comboBox = new JComboBox<>(comboBoxModel);
private String[] arrayListToString() {
//Look at the Zhuinden's answer ;)
}