Java 将ArrayList返回到字符串

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

我已经设法将ArrayList值放入字符串中,当我在控制台中打印出字符串时,一切正常,它获取所有信息,但当我返回字符串时,它只显示最后一个元素

e、 g。 有3个车库

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 ;)
}