ArrayList和添加项目的问题

时间:2008-12-30 01:49:11

标签: java collections arraylist

我的帮助。

我为我的英语道歉,它还在学习。我在Java中用GUI做了一个应用程序。我有一个问题。

在这个应用程序中,我有一个我想要与数据相遇的ArrayList。

用户点击按钮,来自JTextfield的数据应放在Arraylist中。

当他们这样做时,它只插入第一行。 Arraylist中的其他条目不是。

请问我该怎么做。

以下是我的申请代码:

public void save_to_array(String jmeno_zad,
                          String prijmeni_zad,
                          String rodne_cislo_zad,
                          String mesto_zad,
                          String spz_zad,
                          String barva_zad, 
                          String vin_zad, 
                          String znacka_zad){


            String arraytext=prijmeni_zad+ ","+
            jmeno_zad+ ","+ 
            rodne_cislo_zad+ ","+
            mesto_zad+","+
            spz_zad+","+
            barva_zad+","+
            vin_zad+","+
            znacka_zad; 

            int posl=arlist.size(); 
            if(arlist.isEmpty()||posl==1){ 
                arlist.add(0,arraytext);
            } 

            if(!arlist.isEmpty()&& posl>1){ 
                arlist.add(posl-1, cele_jmeno); 
            }
        } 

4 个答案:

答案 0 :(得分:4)

只需使用ArrayList.add(arraytext),而不是ArrayList.add(0,arraytext)。你真的不在乎它最终的位置,对吗?

替换

 int posl=arlist.size(); 
 if(arlist.isEmpty()||posl==1){ 
            arlist.add(0,arraytext);
  }
  if(!arlist.isEmpty()&& posl>1){ 
            arlist.add(posl-1, cele_jmeno); 
  }

arlist.add(arraytext);

答案 1 :(得分:4)

到目前为止,您收到的所有答案都是正确的。确切地说,如果你想将它添加到一个arraylist而你并不真正关心这个位置,那就用

arrayList.add(arrayText)

否则,使用TreeSet会有所帮助。

我尝试这个问题的原因是因为,你的方法参数产生了臭味。我对提出适当建议的问题很少。

  • 你真的需要8个参数吗?为什么不定义POJO(Plain Old Java Object)
  • 如果您认为自己需要再传递一件事作为参数,会发生什么?你会把它增加到9吗? POJO会有意义,绝对是一种更清洁的方式
  • 为什么要将所有值连接成一个用逗号分隔的单个字符串作为分隔符?为什么不列出POJO?它不符合你的目的吗?实际上这种方式我不知道你需要多少次操作该字符串,这会在每次需要一个特定元素时导致不必要的工作,并且它会明显影响性能。

答案 2 :(得分:0)

好的,让我看看我是否正确。

你有一个JTextField。

至于你的代码我明白,如果arraylist是空的,你应该把文本放在第一个位置。

如果不是空的,它应该进入以下位置?

就是这样:

public void saveToArray(  String jmeno_zad,
                          String prijmeni_zad,
                          String rodne_cislo_zad,
                          String mesto_zad,
                          String spz_zad,
                          String barva_zad, 
                          String vin_zad, 
                          String znacka_zad) {


            String arrayText=prijmeni_zad+ ","+
                             jmeno_zad+ ","+ 
                             rodne_cislo_zad+ ","+
                             mesto_zad+","+
                             spz_zad+","+
                             barva_zad+","+
                             vin_zad+","+
                             znacka_zad; 

            arrayList.add( arrayText );

 }

默认情况下,如果arraylist为空,则文本将位于第1个位置。下一个添加将在第二,第三等。

我希望这会有所帮助。

答案 3 :(得分:0)

如果您关心它的位置,请尝试将其添加到SortedSet(可能是TreeSet)