ArrayList и проблема с добавлением элементов - PullRequest
1 голос
/ 30 декабря 2008

Пожалуйста, за вашу помощь.

Я прошу прощения за мой английский, он все еще учится. Я делаю одно приложение в GUI на Java. У меня есть одна проблема.

В этом приложении у меня есть 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 ]

4 голосов
/ 30 декабря 2008

Все ответы, которые вы получили до сих пор, верны. Точно, если вы хотите добавить это в arraylist, и вы не очень заботитесь о позиции, просто используйте

arrayList.add(arrayText)

В противном случае использование TreeSet поможет.

Причина, по которой я попытался ответить на этот вопрос, заключается в том, что аргументы вашего метода вызывают неприятный запах кода. У меня есть несколько вопросов с соответствующими предложениями.

  • Вам действительно нужно 8 аргументов? Почему бы не определить POJO (обычный старый Java-объект)
  • Что произойдет, если вы думаете, что вам нужно передать еще одну вещь в качестве аргумента? Вы бы увеличили его до 9? POJO имеет смысл и является более чистым способом
  • Почему вы объединяете все значения в одну строку, разделенную запятой, в качестве разделителя? Почему бы не иметь список POJO? Разве это не будет служить вашей цели? На самом деле, таким образом, я не знаю, сколько раз вам нужно манипулировать этой строкой, что приведет к ненужной работе каждый раз, когда вам нужен отдельный элемент, и это явно влияет на производительность.
4 голосов
/ 30 декабря 2008

Просто используйте 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);
0 голосов
/ 30 декабря 2008

если вы заботитесь о его положении, попробуйте добавить его в SortedSet (возможно, TreeSet)

0 голосов
/ 30 декабря 2008

Хорошо, дай мне посмотреть, правильно ли я понял.

У вас есть JTextField.

Что касается вашего кода, я понимаю, что, если массив пуст, вы должны поместить текст в первую позицию.

Если он не пустой, он должен идти в следующих позициях?

Это было бы так:

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

 }

По умолчанию, если массив пуст, текст будет на первой позиции. Следующее дополнение будет во 2-м, 3-м и т. Д.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...