Использование коллекций Java.singletonList()?



зачем Collections.singletonList() в Java? Я понимаю, что он возвращает список с одним элементом. Почему я хочу иметь отдельный метод для этого? Какую роль здесь играет неизменность?



существуют ли какие-либо специальные полезные варианты использования для этого метода, а не просто удобный метод?

855   5  

5 ответов:

на документация говорит:

"возвращает неизменяемый список, содержащий только указанный объект. Возвращенный список является сериализуемым."

ты спрашиваешь:

почему я хочу иметь отдельный метод для этого?

для удобства ... чтобы сэкономить вам нужно написать последовательность операторов:

  • создать пустой объект list
  • добавить элемент к нему, и
  • оберните его с неизменяемой оберткой.

существуют ли какие-либо специальные полезные варианты использования для этого метода, а не просто удобный метод?

очевидно, что есть случаи использования, когда удобно использовать singletonList метод. Но я не знаю, как бы вы (объективно) различали обычный прецедент и "особенно полезный"...

вот view по одноэлементным методам:

Я обнаружил, что эти различные" одноэлементные " методы полезны для передачи одного значения в API, который требует коллекции этого значения. Конечно, это работает лучше всего, когда код обработки переданного значения не нужно добавлять в коллекцию.

@param  the sole object to be stored in the returned list.
@return an immutable list containing only the specified object.

import java.util.*;

public class HelloWorld {
    public static void main(String args[]) {
        // create an array of string objs
        String initList[] = { "One", "Two", "Four", "One",};

        // create one list
        List list = new ArrayList(Arrays.asList(initList));

        System.out.println("List value before: "+list);

        // create singleton list
        list = Collections.singletonList("OnlyOneElement");
        list.add("five"); //throws UnsupportedOperationException
        System.out.println("List value after: "+list);
    }
}

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

Если неизменяемая / Одноэлементная коллекция относится к той, которая имеет только один объект и которая в дальнейшем не изменяется, то та же функциональность может быть достигнута путем создания коллекции "UnmodifiableCollection", имеющей только один объект. Поскольку одна и та же функциональность может быть достигнута с помощью неизменяемой коллекции с одним объектом, то для какой специальной цели служит Одноэлементная коллекция?

чтобы ответить на ваш неизменный вопрос:

Collections.SingletonList создать неизменяемый список. Неизменяемый список (также называемый неизменяемым списком) не может иметь измененного содержимого. Методы для добавления или удаления элементов будут выдавать исключения при попытке изменить содержимое.

одноэлементный список содержит только один элемент и не может быть изменена.

Comments

    Ничего не найдено.