[JAVA] Array

mango·2023년 10월 9일
0

JAVA

목록 보기
10/10

🍯 ArrayList와 배열 호환

- ArrayList -> Array

ArrayList -> Array는 for문을 사용하자

toArray() 함수의 return 값이 Object[] 이기 때문이다.
우리가 원하는 int[]나 String[]이 되려면 형변환이 또 필요하다.

ArrayList<Integer> al = new ArrayList<Integer>();
Object[] a = al.toArray();

- Array -> ArrayList

Array -> ArrayList는 Array.asList(arr) 함수를 사용하자
※ int[] 배열은 Wrapper 클래스로 만들어줘야 List로 변경 가능하다.

String[] a = {"a","b","c","d","e"};
List<String> al = Array.asList(a);

* 주의할 점: int[] -> ArrayList 로 변환 못함
int는 Primitive 타입, Integer은 Reference 타입이므로




🍯 배열 정렬(Sorting)


1. 기본 정렬
Arrays.sort(arr);


  
2. 내림차순 정렬
Arrays.sort(arr, Collections.reverseOrder());
- 내림차순은 Primitive 타입은 정렬이 안된다.
- String이나 Integer 같은 Reference 타입만 정렬 가능


  
3. HashMap에서 value 기준으로 정렬
Arrays.sort(arr, (o1, o2) -> (o1.get().compareTo(o2.get())) );
- 여기서 arr는 HashMap의 keySet 이다.

  

4. 문자열 length 기준으로 정렬
Arrays.sort(arr, (o1, o2) -> (o1.length() - o2.length()) );

  
  
5. 2차원 배열 정렬
int[][] arr = new int[][];
arr = {{1,5}, {9,2}, {6,3}, {6,1}};
  
Arrays.sort(arr, (o1, o2) -> (o1[0] == o2[0] ? o1[1] - o2[1] : o2[0] - o1[0]) );
- 람다식으로 2차원배열 정렬
- 여기서 o1,o2는 2차원배열의 각 원소인 1차원 배열을 의미하므로, 처음에 0번째 원소를 비교해서 
  같으면 1번째원소를 비교해서 오름차순,
  같지 않으면 0번째 원소는 내림차순으로 정렬했다.
  
- 결과: {{9,2}, {6,1}, {6,3}, {1,5}}
  
profile
앎의 즐거움을 아는 나는 mango ♪

0개의 댓글