Java: реализация по умолчанию List и Set [duplicate]

Пакет Visual Studio NuGet необходимо обновить для новой версии набора инструментов

У меня просто возникла проблема с подключением libpng с Visual Studio 2013. Проблема в том, что в файле пакета были только библиотеки для Visual Studio 2010 и 2012.

Правильное решение - надеяться, что разработчик выпустит обновленный пакет и затем обновит его, но он работал для меня, взломав дополнительную настройку для VS2013, указав на файлы библиотеки VS2012.

Я отредактировал пакет (в папке packages внутри каталога решения), найдя packagename\build\native\packagename.targets и внутри этого файла, скопировав все секции v110. Я изменил v110 на v120 в полях условий только очень осторожно, чтобы пути с именами файлов были все как v110. Это просто позволило Visual Studio 2013 подключиться к библиотекам на 2012 год, и в этом случае он работал.

52
задан skiwi 20 February 2014 в 17:38
поделиться

3 ответа

Итак, какой конкретный тип (подкласс) List используется здесь? Есть ли какие-либо гарантии?

Если вы посмотрите на документацию Collectors#toList() , в нем указано, что - «Нет никаких гарантий для типа, изменчивость, сериализуемость или безопасность потоков в списке «. Если вы хотите, чтобы конкретная реализация была возвращена, вы можете использовать Collectors#toCollection(Supplier) .

Supplier<List<Shape>> supplier = () -> new LinkedList<Shape>();

List<Shape> blue = shapes.stream()
            .filter(s -> s.getColor() == BLUE)
            .collect(Collectors.toCollection(supplier));

И из лямбда вы можете вернуть любую реализацию, которую вы хотите List<Shape>.

Обновление:

Или вы даже можете использовать ссылку на метод:

List<Shape> blue = shapes.stream()
            .filter(s -> s.getColor() == BLUE)
            .collect(Collectors.toCollection(LinkedList::new));
79
ответ дан Rohit Jain 25 August 2018 в 17:47
поделиться

Это не имеет значения, но конкретный тип не является общим, так как все типы не являются универсальными во время выполнения.

Итак, какой конкретный тип (подкласс) List является используется здесь? Есть ли какие-либо гарантии?

Я так не думаю, но ArrayList или LinkedList кажутся вероятными.

0
ответ дан Peter Lawrey 25 August 2018 в 17:47
поделиться

Перемещение по Netbeans (Ctrl + Click), я приземлился в этом коде. Кажется, он использует ArrayList в качестве поставщика.

public static <T> Collector<T, ?, List<T>> toList() {
    return new CollectorImpl<>((Supplier<List<T>>) ArrayList::new, List::add,
                               (left, right) -> { left.addAll(right); return left; },
                               CH_ID);
}
6
ответ дан whyem 25 August 2018 в 17:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: