ListIterator 를 이용하여 list 의 양방향 순회가 가능
ArrayList<String> list = new ArrayList<String>();
list.add("ONE");
list.add("TWO");
list.add("THREE");
ListIterator iterator = list.listIterator();
while (iterator.hasNext()) {
System.out.println(iterator.next()); //forward
}
while (iterator.hasPrevious()) {
System.out.println(iterator.previous()); //backward
}
많은 개발자가 Arrays.asList(array) 메소드를 사용해 array를 ArrayList로 변환한다. 하지만, 이 메소드는 가변적인 사이즈를 지원하는 ArrayList와 다른 클래스를 반환한다. 그러므로 다른 방법이 필요하다
String[] array = new String[] {"one", "two", "three"};
List<String> list = new ArrayList<>(Arrays.asList(array));
System.out.println(list);
int와 같은 primitive type의 경우는 안타깝게도 위와 같이 할 수 없다. 아래와 같이 하나씩 옮겨야 한다
int[] array = {1, 2, 3};
List<Integer> list = new ArrayList<>();
for(int i : array) {
list.add(i);
}
System.out.println(list); //[1, 2, 3]
Collections.addAll() 메소드 사용
String [] array = new String[] {"one", "two", "three"};
List<String> list = new ArrayList<>();
Collections.addAll(list, array);
System.out.println(list); //[one, two, three]
List 인터페이스의 addAll() 메소드 사용
String [] array = new String[] {"one", "two", "three"};
List<String> list = new ArrayList<>();
list.addAll(Arrays.asList(array));
System.out.println(list); //[one, two, three]
Java 8의 Stream 사용하기
String [] array = new String[] {"one", "two", "three"};
List<String> list = Arrays.stream(array).collect(Collectors.toList());
System.out.println(list); //[one, two, three]
ArrayList를 Array로 변환
List<String> list = new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
String [] array = new String[list.size()];
list.toArray(array);
for(String s: array){
System.out.println(s);
}
삭제
for (Iterator<Character> iter = letters.iterator(); iter.hasNext(); ) {
Character letter = iter.next();
if (Character.isDigit(letter)) {
iter.remove();
}
}