Collections & Generics

  • 16
  • Недоступна
Реализуй вспомогательныe методы в классе Solution, которые должны создавать соответствующую коллекцию и помещать туда переданные объекты. Методы newArrayList, newHashSet параметризируй типом T. Метод newHashMap параметризируй типами К(ключ) и V(значение). Аргументы метода newHashMap должны принимать
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (31)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
tremb
36 уровень, Москва
3 апреля, 20:15
3363
Артур Прохоренко
28 уровень, Гомель
22 марта, 19:31
Внимание!!! Тип аргумента в методах с Object сразу меняйте на T - вообще ппц, не очевидно. Каст в конструкторе Arrays.asList((T) elements) - валидатор не пропускает. Дженерализованы должны быть как методы, так и возвращаемые типы. В мапу писать проще всего через for loop с двух листов. Странные условия, на пол дня вынесли мозг... Вот этот плейлист рекомендую. Advanced Generics - Java
Иван
33 уровень, Москва
18 декабря 2020, 12:51
Задание не самое ясное для понимания. Без идей в комментариях разобраться сложно, что именно не нравится валидатору.
Станислав
26 уровень, Москва
5 октября 2020, 14:17
Мапу заполнять так: если размеры 2х листов равны, то:
for (int i = 0; i < keys.size(); i++) {
            map.put(keys.get(i), values.get(i));
 }
2793
Serp2015 conceptor в Тольятти
13 декабря 2020, 15:39
Ага, вариации с: HashMap<K, V> map = new HashMap<>(Arrays.asList(...)) не принимает
Serge
36 уровень, Ставрополь
17 сентября 2020, 19:42
2754
Роман Тарнакин
35 уровень, Москва
22 мая 2020, 10:29
712837-ая
Денис Давыдов
38 уровень, Казань
9 апреля 2020, 16:14
Объясните, пожалуйста, что в записи "public static <T> ArrayList<T>...." обозначает первый <T>? Мы указываем тип возвращаемого методом объекта. Этот тип ArrayList<T>. А для чего <T> перед ним?
Виталий Java Developer в Luxoft
10 апреля 2020, 18:08
Таким образом мы указываем, что данный метод параметризован типом T. Там же мы можем, например, задать ограничение этого типа (скажем, <T extends Number>). Тогда это ограничение будет применяться для всех переменных типа T в методе.
Андрей
27 уровень, Санкт-Петербург
15 июня 2020, 15:26
Добавлю, что без этого указания перед типом возвращаемого значения компилятор будет думать, что Т - это какой-то конкретный пользовательский тип, а не параметризация.
Axl NeferSky
35 уровень, Нижний Новгород
25 августа 2020, 05:43
А можно более подробно для тех, кто в танке? Вообще не понимаю дженерик-методы.
Хорс
41 уровень, Харьков
26 августа 2020, 09:17
тоже задался этим вопросом и вот как я это понял: "public static <T> ArrayList<T> foo (T...elements)...." -- первое указание <T> говорит о том что наш метод имеет дело с универсальным типом <T> (дженерик-метод!). Если сделать без этого указания: "public static ArrayList<T> foo (T...elements)...", то программа не будет понимать что это за тип <T> такой у нас такой вообще. -- второе указание говорит о том что мы вернем список, элементы которого будут объектами класса <T>. Мы бы могли это второе указание вообще не делать, тогда компилятор полагал бы что у нас возвращается список элементов класса Object. и еще один интересный нюанс, если у нас метод бы ничего не возвращал, то он объявлялся бы так: "public static <T> void foo (T...elements)......." т.е., тут мы: указываем что это метод-дженерик, он получает некие элементы типа <T>, работает с ними, но ничего не возвращает. Надеюсь, стало немного понятнее.
Axl NeferSky
35 уровень, Нижний Новгород
31 августа 2020, 08:21
Если честно, не совсем... Первое указание <T> - как воспринимать, что наш метод имеет дело с универсальным типом <T>? В смысле... в него передаются аргументы типа <T>? Или он вызывается у объекта типа <T>? Или еще как-то? Как это правильно трактовать?)) Со вторым вот всё понятно - это лист объектов типа <T>. Вместо Т можем написать String или Object - увидим простой типизированный лист, с которым работаем давно и уверенно) Так что с ним универсальность ясна.
Хорс
41 уровень, Харьков
1 сентября 2020, 09:23
что наш метод работает с любым классом, который в него будет передан, а не только с каким-то одним захардкоженым
Axl NeferSky
35 уровень, Нижний Новгород
1 сентября 2020, 10:30
Еще раз перечитал пост выше. На примере "public static <T> void foo (T...elements)......." кажется въехал. Спасибо!
vinograd
33 уровень
3 марта 2020, 00:13
2213
Boris
41 уровень
Expert
2 марта 2020, 23:13
(T... elements) начните с этого запорол пару попыток пытаясь вписать Object а не Тип Т
CTAPuk Инженер разработки в Банк
21 января 2020, 18:40
2098