Подтвердить что ты не робот

If (listStr.size == 0) {versus if (listStr.isEmpty()) {

List<String> listStr = new ArrayList<String>();

if(listStr.size == 0){

}

против

if(listStr.isEmpty()){

}

На мой взгляд, одним из преимуществ использования listStr.isEmpty() является то, что он не проверяет размер списка и затем сравнивает его с нолем, он просто проверяет, пуст ли список. Есть ли другие преимущества, которые я часто вижу if(listStr.size == 0) вместо if(listStr.isEmpty()) в кодовых базах? Есть ли причина, по которой она проверена таким образом, о которой я не знаю?

4b9b3361

Ответ 1

Ответ на этот вопрос мог бы дать вам ответ. В принципе, в реализациях некоторых списков метод isEmpty() проверяет, равен ли размер (и, следовательно, с точки зрения производительности они практически эквивалентны). Однако в других типах списков (например, связанных списках) подсчет элементов требует больше времени, чем для проверки, является ли он пустым или нет.

По этой причине всегда удобно использовать метод isEmpty(), чтобы проверить, пуст ли список. Причины, по которым такой метод предоставляется во всех типах списков, также связаны с интерфейсом, поскольку ArrayList, Vector и LinkedList реализуют один и тот же интерфейс List: этот интерфейс имеет метод isEmpty(); то каждый конкретный тип списка обеспечивает реализацию метода isEmpty().

Ответ 2

Нет, нет причин. isEmpty() выражает намерение более четко и должно быть предпочтительным. PMD даже правило для этого. Однако это не имеет большого значения.

Ответ 3

.size() может быть O (1) или O (N), в зависимости от структуры данных; .isEmpty() никогда не O (N).