Java & Android

Java List 활용

그레이트쪼 2017. 1. 10. 19:45
  • 주요 메소드
  • List로부터 array 만들기
    • List의 toArray() 메소드를 사용한다.
1
2
3
4
5
6
List<String> list = new ArrayList<String>();
list.add("India");
list.add("Switzerland");
list.add("Italy");
list.add("France");
String[] countries = list.toArray(new String[list.size()]);


  • Array(배열)로부터 List 만들기
    • Arrays.asList() 메소드를 사용한다.
1
2
String[] array = {"India""Switzerland""Italy""France"};
List<String> list = Arrays.asList(array);


  • List sorting 하기
    • Collections의 static method를 사용한다. (interface인 Collection이 아니다)
1
2
3
4
5
6
List<Integer> list = new ArrayList<Integer>();
list.add(5);
list.add(3);
list.add(8);
list.add(1);
Collections.sort(list);
    • 만일 custom class에 대해서 Collections.sort()를 사용하고 싶으면 그 객체가 Comparable<T>를 implements (compareTo() 메소드를 overwrite해야 한다) 하거나, 
1
2
3
4
5
6
7
public class MyData implements Comparable<MyData> {
...
    @Override
    public int compareTo(MyData other) {
        return (this.data <= other.data) ? -1 : 1// 0이 없어도 되는지 잘모르겠음
    }
...
    • 아니면 Comparator<T>를 (주로 anonymous로) 정의하여 sort() 메소드 호출시 함께 넣어준다. (compare()를 overwrite한다)
1
2
3
4
5
6
7
Collections.sort(list, new Comparator<MyData>() {
    @Override
    public int compare(MyData lhs, MyData rhs) {
        if (lhs < rhs) return -1;
        else if (lhs == rhs) return 0// 이번에 0 케이스까지 있다. 있든 없든 상관없는 듯.
        else return 1;
    });