Java - Array 와 ArrayList

SeoSangwon·2023년 4월 20일
2

JAVA

목록 보기
2/4

Array

  • Java에서 Python의 Array와는 달리, 같은 데이터 유형의 여러 값을 하나의 변수로 그룹화하는 방법으로, 여러 값을 하나의 변수에 저장하고, 다룰 때 유용하다.
// 배열 생성
int[] arr = {1,2,3,4,5};
System.out.println("arr = " + Arrays.toString(arr));
String[] arr2 = {"hello", "world", "java"};
System.out.println("arr2 = " + Arrays.toString(arr2));
  • 위의 코드는 Array(배열)을 생성하고 출력하는 코드이다. Array를 출력하기 위해서는 Arrays를 import 후, 다른 데이터타입으로 변환 진행 해야 한다.
  • Array(배열)의 크기는 선언할 때 고정된다. 즉, 크기를 동적으로 변경할 수 없다는 뜻 이다.
  • 또한, 값에 접근하기 위해서는 Array[index]를 사용하여 값에 접근할 수 있다.
// 배열 생성과 할당
String[] weeks = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"};
System.out.println("weeks = " + Arrays.toString(weeks));
String[] days = new String[7]; // 7개의 빈 문자열 배열 생성
System.out.println("days = " + Arrays.toString(days));
days[0] = "Mon";
days[1] = "Tue";
days[2] = "Wed";
days[3] = "Thu";
days[4] = "Fri";
days[5] = "Sat";
days[6] = "Sun";
System.out.println("days = " + Arrays.toString(days));
  • 배열의 길이를 정의 하지 않으면, 생성자로 배열을 생성할수 없다.
String[] weeks2 = new String[]; // Error
String[] weeks2 = new String[5];

ArrayList

  • ArrayList와 Array의 차이점을 표로 나타내면 다음과 같다.
속성ArrayArrayList
크기(길이)고정동적
타입기본과 객체객체만
메소드Indexing, lengthget, size, add
속도빠름Array에 비해 느림
초기화초기값을 지정하여 생성요소를 추가하며 초기화
사용성데이터의 추가,제거시 새로운 배열 생성동적으로 추가,제거 가능

ArrayList의 생성과 접근

  • ArrayList에 data를 추가하기 위해서는 ArrayList.add(index,element)를 사용하여 원하는 index에 값을 추가 할 수있다.

    // Create ArrayList, add
    ArrayList menu = new ArrayList();
    menu.add("pizza");
    menu.add("hamburger"); // add: 맨끝에 추가 -> menu.add(menu.size(), "hotdog");
    System.out.println(menu);
    menu.add(0,"chicken");
    System.out.println("menu = " + menu);
    menu.add(1);
    System.out.println("menu = " + menu);
  • ArrayList는 기본적으로 서로 다른 type의 데이터들도 들어가고, 지정된 데이터의 type만 넣기 위해서는
    ArrayList<Datatype> 을 사용하면 된다.

    ArrayList<String> menu2 = new ArrayList<>();
    menu2.add("pizza");
    menu2.add("hamburger");
    System.out.println(menu2);
    menu2.add(0,"chicken");
    System.out.println("menu2 = " + menu2);
    //menu2.add(1); // Error

get, set

  • ArrayList에서 배열의 요소에 접근하기 위해서는 Array와 달리, get(index)set(index, value) 메소드를 사용하여 접근이 가능하다.
    // get, set 메소드
    System.out.println(menu.get(1));  // get(index) : index의 값 반환
    menu.set(1,"salad");  // set(index, value) : index의 값을 value로 바꾼다

contains

  • contains 메소드는 Python의 in 과 같은 역할을 하는 메소드로, 배열 안에 원하는 값이 있는지 확인하는 용도로 사용 되고, 있으면 true 없으면 false를 return 한다.
    // contains
    System.out.println("menu.contains(\"pizza\") = " + menu.contains("pizza"));
    System.out.println("menu.contains(\"chicken\") = " + menu.contains("chicken"));

remove

  • remove는 원하는 index에 해당하는 값이나 element값을 삭제 하고 싶을때 사용하는 메소드이다. 인자에 따라 오버로딩과 오버라이딩이 동시에 적용되어 있는 메소드로, 인자가 index일 경우 오버라이딩 된 remove가,
    요소를 전달할 경우 오버로딩된 remove 메소드가 호출된다.
      // remove
    System.out.println("menu.remove(\"salad\") = " + menu.remove("salad"));  // 오버로딩
    System.out.println("menu.remove(0) = " + menu.remove(0));  // 오버라이딩

Array to ArrayList

  • Array를 ArrayList를 변환하는 방법은 Arrays.asList(Array) 를 사용하여 만든다.

    // Array를 ArrayList로
    String[] menu3 = {"pizza", "hamburger",   "hotdog"};
    ArrayList<String> menu4 = new ArrayList<>(Arrays.asList(menu3));
    menu4.add("beer");
    System.out.println("menu4 = " + menu4);

join

  • join() 메소드는 배열 혹은 나열된 데이터를 특정 구분자로 구분하고 싶을 때, 사용 되는 메소드 이다.
    // join
    String result = String.join(", ", menu4);
    System.out.println("result = " + result);
    // result = pizza, hamburger, hotdog, beer
    result = String.join("; ", menu4);
    System.out.println("result = " + result);
    // result = pizza; hamburger; hotdog; beer

sort

  • 배열을 정렬하고 싶을 경우 ArrayList.sort() 메소드를 사용한다. defalut는 오름차순(ascending)으로, Comparator.naturalOrder()) 이 default 이다. 내림차순으로 정렬하고 싶을경우 Comparator.reverseOrder()를 매개변수로 넣어주면 된다.
    // sort
    numbers.sort(null);  // null -> 오름차순(ascending)
    System.out.println("numbers = " + numbers);
    numbers.sort(Comparator.naturalOrder());  // == sort.(null)
    System.out.println("naturalOrder / numbers = " + numbers);
    numbers.sort(Comparator.reverseOrder());  // -> 내림차순(descending)
    System.out.println("reverseOrder / numbers = " + numbers);

0개의 댓글