2015-01-06 3 views
1

У меня есть один ArrayList, по какой-то причине я должен добавить пустую строку элемента «»:Java ArrayList размера с пустым элементом []

ArrayList<String> rList = new ArrayList<String>(); 
rList.add(""); 

Когда я прочитал размер список массива Rlist затем, Rlist. size() == 1 и rList.isEmpty() == false.

Как проверить этот список массивов? делает ли пустой элемент равным 1, а не пустым?

+1

Да, в математике набор, состоящий только из пустого множества, пуст. Здесь коллекция не заботится о ценности строки, а о ее присутствии. – lared

+2

Подождите, что? Множество пустого множества не пустое в математике; например это 1 в http://en.wikipedia.org/wiki/Set-theoretic_definition_of_natural_numbers. –

+0

Что вы имеете в виду «Как я могу проверить этот список массивов?» –

ответ

7

Даже если вы добавляете пустую строку в свой список, вы все равно добавляете что-то. И это так важно.

Данные могут быть пустыми (или даже null, как ArrayList позволит вам вставить null), но размер будет увеличиваться (и этот список не будет пустым).

Теперь, если вы хотите, чтобы проверить, что есть только что рода элемента в списке (как вы утверждаете в комментариях), то это можно так:

if(rList.size() == 1 && "".equals(rList.get(0)) { 
    // perform work 
} 

Линия выше будет только если в списке есть только одна запись, и только если это пустая строка. Реверс строки буквального и get является защита против NullPointerException, так как это может произойти, если вы его перевернуть в другую сторону «вокруг, и есть null в для элемента 0.

+0

Спасибо за четкое объяснение. –

1

Чтобы проверить, пуст ли это строка: Строка x = ""; boolean isXEmpty = x.isEmpty();

Да, пустой экземпляр String является допустимым экземпляром, как и любая другая String. Так что это будет считаться.

+0

Спасибо, я думаю, что смогу следовать твоему предложению. –

0

Чтобы ответить на ваш вопрос How can I check this kind of array list?, вы можете проверить индексы, чтобы узнать, содержит ли ваш ArrayList какое-либо конкретное значение, итерации через него.

ArrayList<String> rList = new ArrayList<String>(); 
rList.add(""); 

for (String item : rList) { 
    if (item.equals("")) { 
     //do something 
    } 
} 

Если вы проверяете, если все показатели вашего ArrayList пустые строки, один способ добавить счетчик и сравнить его с размером ArrayList.

ArrayList<String> rList = new ArrayList<String>(); 
rList.add(""); 
rList.add(""); 
rList.add(""); 

int crossCheck = 0; 

for (String item : rList) { 
    if (item == null) {//equals() will throw a NPE when checking for null values 
     //do something 
    } else if (item.isEmpty()) { 
     crossCheck++; 
     //do something 
    } 
} 
//both are 3 in this case 
if (rList.size() == crossCheck) { 
    //all indices are empty Strings 
} 

У Макото есть отличный ответ для остальной части вашего вопроса.

+0

Что произойдет, если список содержит запись «null»? – Makoto

+0

Нигде в вопросе не указан ни один указатель. –

+0

Ну нет, но это не моя точка. Мы установили, что список может содержать «null» и быть непустым; если вы хотите быть уверены, что не получаете «NullPointerException», вы должны изменить порядок «равно». – Makoto

1

Для проверки пустого списка используйте этот код: Даже размер списка 1, но его метод get() возвращает null. , чтобы вы могли убедиться, что фактический список не имеет значения.

if(someList.get(0)!=null) 
+0

Это может все же вызвать исключение IndexOutOfBoundsException, хотя если список не содержит элементов. – user3105453

Смежные вопросы