【问题标题】:ArrayList and the problem with adding itemsArrayList 和添加项目的问题
【发布时间】:2008-12-30 01:49:11
【问题描述】:

我请你帮忙。

我为我的英语道歉,它还在学习中。我在 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); 
            }
        } 

【问题讨论】:

    标签: java collections arraylist


    【解决方案1】:

    只使用 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);
    

    【讨论】:

      【解决方案2】:

      到目前为止,您收到的所有答案都是正确的。准确地说,如果你想将它添加到数组列表中并且你并不关心位置,只需使用

      arrayList.add(arrayText)
      

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

      我尝试这个问题的原因是,您的方法参数正在产生恶意代码气味。对于适当的建议,我有几个问题。

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

      【讨论】:

      • 好点。如果您需要进行所有这些连接,则有些地方不太对劲。
      【解决方案3】:

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

      你有一个 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 为空,则文本将位于第一个位置。下一个添加将在第 2、第 3 等。

      我希望这会有所帮助。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-17
          • 1970-01-01
          相关资源
          最近更新 更多