Имеется первый класс One
с конструктором, принимающим в качестве аргумента ArrayList
типа String
, :
class One{
ArrayList<String> al = new ArrayList<>();
One(ArrayList<String> a){
for(int i = 0; i < a.size(); i++)
this.al.add(a.get(i));
}
Имеется второй класс Two
(агрегирующий массив типа One
):
class Two{
ArrayList<One> a = new ArrayList<>();
public void addValue(One one){
a.add(one);
}
}
Как правильно записать передачу аргумента типа `ArrayList?
Two two = new Two();
two.addValue(????); // тут нужно добавить текст "тактовая частота"
two.addValue(????); // тут нужно добавить текст "процессор" и "объем ОЗУ"
two.addValue(????); // тут нужно добавить "дорожка", "стек", "сортировка"
P.S. Читал этот топик
ОТВЕТЫ:
1. Метод "двойной скобки":
ArrayList<String> list = new ArrayList<String>() {{
add("text1");
add("text2");
add("text3");
}};
Какие ещё есть варианты?
я бы написал класс One так:
class One{
ArrayList<String> al;
One(List<String> a){
al = new ArrayList<>(a);
}
}
А вот решение:
two.addValue(new One(Arrays.asList(new String[] {"тактовая частота"})));
two.addValue(new One(Arrays.asList(new String[] {"процессор", "объем ОЗУ"})));
two.addValue(new One(Arrays.asList(new String[] {"дорожка", "стек", "сортировка"})));
Как по мне, есть варианты лучше и проще. Например, так :
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class One {
List<String> al = new ArrayList<>();
One(String...names) {
al.addAll(Arrays.asList(names));
}
}
class Two{
List<One> a = new ArrayList<>();
public Two addValue(One one){
a.add(one);
return this;
}
public Two addValue(String ... one){
return addValue(new One (one));
}
}
class Test {
public void test (){
Two two = new Two()
.addValue("тактовая частота")
.addValue("процессор", "объем ОЗУ")
.addValue("дорожка", "стек", "сортировка");
}
}
class Two{
ArrayList<One> a = new ArrayList<>();
public Two addValue(One one){
a.add(one);
return this;
}
}
Two two = new Two().
addValue(new One(new ArrayList<String>() {{ add("тактовая частота"); }})).
addValue(new One(new ArrayList<String>() {{ add("процессор"); add("объем ОЗУ"); }}));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
что я делаю не так, не могу получить в другом классе вот это
Использую библиотеку ZXing для распознавания кодовПри сканировании экран переворачивается в горизонтальный
Помогите решить задачкуЕсть рабочий код шифра Цезаря, есть написанный интерфейс, не могу все это совместить в одно
Я только пробую работать с RMIЗапускаю клиент и сервер на разных компьютерах