java : List 사용

su dong·2023년 5월 5일
0

배열 != List

파이썬으로 코테를 치다가 java로 넘어오면서 첫 관문은 리스트인 것 같다.
파이썬에서는 리스트==배열 이었는데, 자바는 아니라서 일일이 선언해주는 법을 익혀야 한다.

1. List 선언

import java.util.ArrayList;
import java.util.Arrays;

ArrayList<Long> arr = new ArrayList<>();
ArrayList<Integer> arr2 = new ArrayList<>();

1.2. int[] 배열을 List로 변환

import java.util.stream.Collectors;

int[] arr = {1,2,3};
ArrayList<Integer> list = (ArrayList) Arrays.stream(arr).boxed().collect(Collectors.toList());
System.out.println(list);
  • boxed()를 사용해서 primitive Stream 값들을 Wrapper Class로 바꾼다.
  • collect(Collectors.toList())를 통해서 Stream을 List로 변경.

2. List사용

  • add(index, value)
  • remove(Integer.valueOf(value)) || remove(index)
  • clear()
  • contains(value)
  • indexOf(value)
  • get(index)
ArrayList<Integer> list1 = new ArrayList<>();

list1.add(1); //[1]
list1.add(2); //[1,2]
list1.add(3); //[1,2,3]
list1.add(0, 10);[10,1,2,3]

list1.remove(Integer.valueOf(2)); //[10,1,3]
list1.remove(1); //[10,3]

System.out.println("list1.size() : " + list1.size()); //2
System.out.println(list1.contains(10)); //true
System.out.println(list1.indexOf(10)); //0

3. List -> 배열형변환

int[] answer = arr.stream().mapToLong(Long::longValue).toArray();
int[] answer2 = arr2.stream().mapToInt(Integer::intValue).toArray();

4. LinkedList

List에 조금 추가

  • addFirst()
  • addLast()
  • removeFirst()
  • removeLast()
LinkedList list2 = new LinkedList();
list2.add(1); //[1]
list2.add(2); //[1,2]
list2.add(3); //[1,2,3]

list2.addFirst(5); //[5,1,2,3]
list2.add(0,10); //[10,5,1,2,3]
list2.addLast(33); //[10,5,1,2,3,33]

list2.remove(Integer.valueOf(1)); //[10,5,2,3,33]
list2.removeFirst(); //[5,2,3,33]
list2.removeLast(); //[5,2,3]

5. 문자열 -> ArrayList

import java.util.ArrayList;
import java.util.Arrays;
ArrayList<String> list = new ArrayList<>(Arrays.asList(str));
profile
사람들을 돕는 문제 해결사, 개발자 sudong입니다. 반갑습니다. tkddlsqkr21@gmail.com

1개의 댓글

comment-user-thumbnail
2023년 5월 5일

//배열을 리스트로 변환 : 배열 -> stream-> int를 Integer로 변환 -> (Array)list
ArrayList list = (ArrayList)Arrays.stream(arr).boxed().collect(Collectors.toList());

//리스트에서 인덱스참조 삭제
list.remove(idx);

//리스트를 배열로 변환: list -> stream -> Integer를 int로 변환 -> 배열
answer = list.stream().mapToInt(Integer::intValue).toArray();

답글 달기