미리 정의 된 일부 값으로 ArrayList 초기화
이 질문에 이미 답변이 있습니다.
- 한 줄로 ArrayList 초기화 31 답변
어디에서나 샘플 프로그램이 있습니다.
ArrayList
symbolsPresent
ONE, TWO, THREE 및 FOUR와 같은 미리 정의 된 기호로 초기화되기를 원합니다 .
symbolsPresent.add("ONE");
symbolsPresent.add("TWO");
symbolsPresent.add("THREE");
symbolsPresent.add("FOUR");
import java.util.ArrayList;
public class Test {
private ArrayList<String> symbolsPresent = new ArrayList<String>();
public ArrayList<String> getSymbolsPresent() {
return symbolsPresent;
}
public void setSymbolsPresent(ArrayList<String> symbolsPresent) {
this.symbolsPresent = symbolsPresent;
}
public static void main(String args[]) {
Test t = new Test();
System.out.println("Symbols Present is" + t.symbolsPresent);
}
}
할 수 있습니까?
이 시도
new String[] {"One","Two","Three","Four"};
또는
List<String> places = Arrays.asList("One", "Two", "Three");
이중 중괄호 초기화는 옵션입니다.
List<String> symbolsPresent = new ArrayList<String>() {{
add("ONE");
add("TWO");
add("THREE");
add("FOUR");
}};
참고를 String
제네릭 형식 인수가 있습니다 에 의해 지시 된 표현 같이 할당 된 표현에 필요한 JLS §15.9
클래스 인스턴스 생성식이 클래스의 형식 인수에 대해 "<>"형식을 사용하여 익명 클래스를 선언하면 타임 오류입니다.
오버로드 된 ArrayList 생성자 를 사용하는 방법은 어떻습니까?
private ArrayList<String> symbolsPresent = new ArrayList<String>(Arrays.asList(new String[] {"One","Two","Three","Four"}));
varargs 구문을 사용하여 코드를 더 깔끔하게 만들 수도 있습니다.
오버로드를 생성하여 사용합니다.
ArrayList<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c"));
utils 모듈의 하위 클래스 ArrayList :
public class MyArrayList<T> extends ArrayList<T> {
public MyArrayList(T... values) {
super(Arrays.asList(values));
}
}
ArrayList<String> list = new MyArrayList<String>("a", "b", "c");
또는 정적 팩토리 방법을 사용하십시오 (내 선호하는 접근 방식).
public class Utils {
public static <T> ArrayList<T> asArrayList(T... values) {
return new ArrayList<T>(Arrays.asList(values));
}
}
ArrayList<String> list = Utils.asArrayList("a", "b", "c");
import com.google.common.collect.Lists;
...
ArrayList<String> getSymbolsPresent = Lists.newArrayList("item 1", "item 2");
...
Java 8 Stream API를 사용할 수 있습니다.
개체의 스트림을 생성하고 목록으로 수집 할 수 있습니다.
private List<String> symbolsPresent = Stream.of("ONE", "TWO", "THREE", "FOUR")
.collect(Collectors.toList());
public static final List<String> permissions = new ArrayList<String>() {{
add("public_profile");
add("email");
add("user_birthday");
add("user_about_me");
add("user_location");
add("user_likes");
add("user_posts");
}};
Java 9를 사용하면 List.of
팩토리를 사용하여 한 줄의 코드를 만들 수 있습니다 .
public class Main {
public static void main(String[] args) {
List<String> examples = List.of("one", "two", "three");
System.out.println(examples);
}
}
다수 :
[one, two, three]
개인적으로 저는 생성자에서 모든 초기화를 좋아합니다.
public Test()
{
symbolsPresent = new ArrayList<String>();
symbolsPresent.add("ONE");
symbolsPresent.add("TWO");
symbolsPresent.add("THREE");
symbolsPresent.add("FOUR");
}
편집 : 물론 선택이고 다른 사람들은 선언에서 초기화하는 것을 선호합니다. 둘 다 유효합니다. 모든 유형의 초기화가 가능하기 때문에 생성자를 선택했습니다 (루프 또는 매개 변수가 필요한 경우 ...). 그러나 소스 상단의 선언에서 상수를 초기화합니다.
가장 중요한 것은 당신이 좋아하는 규칙을 따르고 우리 수업에서 일관성을 유지하는 것입니다.
또한 목록을 읽기 전용으로 설정하려는 경우 (수정 된 경우 UnsupportedOperationException 발생) :
List<String> places = Collections.unmodifiableList(Arrays.asList("One", "Two", "Three"));
한 줄 초기화를 위해 Arrays.asList ()를 사용하는 것이 좋습니다. List를 선언하고 초기화하는 다양한 방법에 대해서는 Java에서 ArrayList 초기화를 참조 할 수도 있습니다.
ArrayList에서 상속하는 일반 클래스를 사용하고 변수 번호 또는 인수가있는 매개 변수가있는 생성자를 구현합니다.
public class MyArrayList<T> extends ArrayList<T> {
public MyArrayList(T...items){
for (T item : items) {
this.add(item);
}
}
}
예:
MyArrayList<String>myArrayList=new MyArrayList<String>("s1","s2","s2");
메서드 외부에서 초기화하려면 이니셜 라이저 블록을 사용하십시오.
import java.util.ArrayList;
public class Test {
private ArrayList<String> symbolsPresent = new ArrayList<String>();
// All you need is this block.
{
symbolsPresent = new ArrayList<String>();
symbolsPresent.add("ONE");
symbolsPresent.add("TWO");
symbolsPresent.add("THREE");
symbolsPresent.add("FOUR");
}
public ArrayList<String> getSymbolsPresent() {
return symbolsPresent;
}
public void setSymbolsPresent(ArrayList<String> symbolsPresent) {
this.symbolsPresent = symbolsPresent;
}
public static void main(String args[]) {
Test t = new Test();
System.out.println("Symbols Present is" + t.symbolsPresent);
}
}
참고 URL : https://stackoverflow.com/questions/16194921/initializing-arraylist-with-some-predefined-values
'ProgramingTip' 카테고리의 다른 글
Chrome은 이미지 / js / css를 캐시하지 않습니다. (0) | 2020.12.09 |
---|---|
UISegmentedControl의 글꼴 색상을 변경하는 방법 (0) | 2020.12.09 |
스칼라 신화 파헤 치기 (0) | 2020.12.09 |
Phonegap IOS에서 오버 스크롤 / 바운스 중지 (0) | 2020.12.09 |
기본 레이아웃 배경은 무엇입니까 (0) | 2020.12.09 |