2014-02-06 3 views
-4

Как избежать нулевой вставки в ArrayList при вставке элемента?Как избежать нулевой вставки в ArrayList?

ArrayList<String> al=new ArrayList<String>(); 
al.add(null);//should avoid 
. 
. 
. 
al.add("Ramesh"); 
+10

К не писать 'al.add (NULL)'. –

+0

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/if.html – pedromss

+0

Если это происходит в цикле, а элемент может быть пустым, выполните проверку if внутри, чтобы убедиться, что элемент не является null перед вставкой в ​​'ArrayList'. –

ответ

1

Вы можете создать свой собственный ArrayList-класс (производный от оригинала) и переопределить метод Add-
Тогда вы могли бы проверить нуль при добавлении.

@Override 
public boolean add(E e) { 
    if (e == null) return false; 
    else return super.add(e) 
} 

Как указано в комментариях, возможно, вы захотите переопределить все другие возможности добавления значений. (see the doc)

  • добавить (Е е)
  • добавить (интермедиат индекс, E элемент)
  • addAll (Сборник с)
  • addAll (интермедиат индекс, Сборник с)
  • набор (интермедиат индекс, элемент E)
+1

Это полупеченое решение. Как насчет 'addAll' и всех других способов изменить список? –

+0

Существует также 'listIterator' и его' add' и 'set' методы ... это, безусловно, выше уровня новичка, и это вопрос начинающего. –

+0

как насчет 'public void add (int index, E element)' ?? – Helios

2

Избегание null может быть вредным и может скрыть возможные ошибки.

Если вы беспокоитесь о получении NullPointerException на определенном этапе, вы можете просто проверить, сохранен ли элемент, хранящийся в ArrayList, null.

Вы не можете запретить вставку null в ArrayList.

+1

Точно. кажется, что OP игнорирует его проблему. –

+0

Не могли бы вы привести примеры ошибок, избегая null? –

+0

@ KugathasanAbimaran Предположим, вы вставляете строки после выполнения некоторой операции над ним в 'ArrayList'. Теперь предположим, что в какой-то момент вам не удалось выполнить что-то в String, и в результате вы вернете «null». Если вы не вставляете его, вы можете подумать, что все строки были в порядке. – Maroun

0

Вы можете попробовать что-то подобное, но если вы хотите сделать именно то, что вы пытаетесь, вам нужно переписать add() в ArrayList классе. С помощью этой проверки вы можете избежать null

public static void main(String[] args) { 
    ArrayList<String> al=new ArrayList<String>(); 
    al=add(al,null); 
    al=add(al,"Ramesh"); 
    al=add(al,"hi"); 
} 

public static ArrayList<String> add(ArrayList<String> al,String str){ 
    if(str!=null){ 
     al.add(str); 
     return al; 
    }else { 
     return al; 
    } 
} 

В этом случае вы должны назвать свой метод пользовательского add добавить элемент

+0

Расширяет класс более сексуально для меня .. В любом случае вам не нужно возвращать экземпляр arraylist. Или, по крайней мере, используйте al = add() каждый раз. Просто добавьте (al, ..) –

0
ArrayList<String> al = new ArrayList<String>() { 

      @Override 
      public boolean add(String s) { 

       if(s != null) { 
        return super.add(s); 
       } 
       return false; 
      } 
     }; 
al.add(null); 
al.add("blabla"); 
Смежные вопросы