728x90
반응형
리스트(List)

 

리스트는 배열과 비슷한 자바의 자료형으로 배열보다 편리한 기능을 많이 가지고 있다.

 

리스트와 배열의 가장 큰 차이는 배열은 크기가 정해져 있지만 리스트는 크기가 정해져 있지 않고 dynamic하다.

예를 들어 배열의 크기를 10개로 정했다면 10개 이상의 값을 담을 수 없다.

하지만 리스트는 크기가 정해져 있지 않아 원하는 만큼의 값을 담을 수 있다.

이렇게 동적으로 자료형의 갯수가 변하는 상황이라면 List를 사용해야 한다.


ArrayList

 

List 자료형 중 가장 간단한 형태의 자료형인 ArrayList 이다.

 

  • add :
    ArrayList 객체에 add라는 메서드를 이용하여 variable 을 삽입한다.
    원하는 인덱스에 삽입을 원할 시 첫번째 argument에 삽입할 위치에 대한 인덱스 숫자를 넘겨준다.

  • get :
    ArrayList 객체 내의 특정 인덱스를 추출할 때 사용한다.

  • size :
    size 메서드는 ArrayList 객체 내의 저장된 variable 갯수를 return 한다.

  • contains :
    contains 메서드는 ArrayList 객체 내에 해당 항목이 있는지 구분하여 boolean 으로 return 한다.(true, false)

  • remove :
    remove 메서드에는 2가지 방식이 있다. (이름은 같지만 parameter 값이 다르다. / like a method overloading
    1. remove(객체)
      : ArrayList에서 객체에 해당되는 항목을 삭제하고 삭제한 결과를 boolean 으로 return 한다.
    2. remove(인덱스)
      : 해당 인덱스의 항목을 삭제하고 삭제된 항목을 return 한다. (like a pop in stack)
import java.util.ArrayList;
	public class TestClass{
		public static void main(String[] args) {
			
			/* add */
			ArrayList pitches = new ArrayList();
			pitches.add("138");
			pitches.add("129");
			pitches.add("142");
			
			/* get */
			System.out.println(pitches.get(1));
			
			/* size */
			System.out.println(pitches.size());
			
			/* contains */
			System.out.println(pitches.contains("142"));
			
			/* remove */
			// 1. remove(object)
			System.out.println(pitches.remove("129"));	// true
			
			// 2. remove(index)
			System.out.println(pitches.remove(0));	// 138
			
		}
			
	}

 


제네릭스 (Generics)

 

제네릭스(Generics)는 자바 J2SE 5.0 이후에 도입된 개념이다.

ArrayList<String> pitches = new ArrayList<String>();

보통 뒷 부분의 자료형은 굳이 적지 않아도 의미가 명확하기 때문에 다음의 표기법을 권장한다.

ArrayList<String> pitches = new ArrayList<>();

* 만약 앞 뒤에 모두 Data type이 입력되어 있을 경우 인텔리제이와 같은 IDE에서는 경고메시지를 출력한다.

 

형 변환 과정에서 잘못된 형변환으로 인한 오류가 발생할 가능성이 있기 때문에 제네릭스를 사용한다.

제네릭스로 자료형을 선언하기만 하면 그 이후로는 자료형에 대한 형 변환 과정이 필요 없다.
이미 컴파일러가 pitches에는 반드시 String 자료형만 추가 되어야 함을 알기 때문이다.

이렇게 제네릭스를 이용하면 형 변환에 의한 불필요한 코딩과 잘못된 형변환에 의한 runtime 오류를 방지할 수 있다.

 

public static void main(String[] args) {
			
//			ArrayList pitcches = new ArrayList();	// Generics 미사용
			ArrayList<String> pitches = new ArrayList<>(3); // Generics 사용
			pitches.add("138");
			pitches.add("129");
			
//			String one = (String) pitches.get(0);	// Generice 미사용시 형변환 필요
			String one = pitches.get(0);
//			String two = (String) pitches.get(1);	// Generice 미사용시 형변환 필요
			String two = pitches.get(1);
			
		}

 

** 다양한 방법으로 ArrayList 생성하기

import java.util.ArrayList;
import java.util.Arrays;	// 기존 문자열 배열이 존재할 경우 사용
	public class TestClass{
		public static void main(String[] args) {
			
			String[] data = {"138", "129", "142"};	// data 문자열 배열이 존재
			ArrayList<String> pitches = new ArrayList<>(Arrays.asList(data));
			// ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142")); 직접 상수 입력 가능
			
			System.out.println(pitches);	// [138, 129, 142]
		}	
	}

 


String.join

 

앞에서 "138", "129", "142" 의 요소로 이루어진 ArrayList에 대해 각 요소를 ( , ) 로 구분하여 하나의 문자열로 만들기

import java.util.ArrayList;
import java.util.Arrays;	// 기존 문자열 배열이 존재할 경우 사용
	public class TestClass{
		public static void main(String[] args) {
			
			ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
			String result = "";
			for (int i= 0; i < pitches.size(); i++) {
				result += pitches.get(i);
				result += ",";
			}
			result = result.substring(0, result.length() - 1); // 마지막 콤마(,) 제거
			System.out.println(result);		// 138, 129, 142
		}	
	}

 

다음과 같이 반복문을 활용하여 루프를 돌며 콤마를 더한 뒤 마지막 콤마까지 제거하는 방법은 까다롭다.

하지만 String.join 을 사용하면 다음처럼 매우 간단하게 처리할 수 있다.

import java.util.ArrayList;
import java.util.Arrays;	// 기존 문자열 배열이 존재할 경우 사용
	public class TestClass{
		public static void main(String[] args) {
			
			ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
			String result = String.join(",", pitches);	// String.join 추가
			
			System.out.println(result);		// 138, 129, 142
		}	
	}

 


리스트 정렬(Sort)

 

sort 메서드에서는 정렬기준을 parameter로 전달해야 한다.

 

- Ascending - Comparator.naturalOrder()

- Descending - Comparator.reverseOrder()

 

import java.util.ArrayList;
import java.util.Arrays;	
import java.util.Comparator;	// Sort

	public class TestClass{
		public static void main(String[] args) {
			
			ArrayList<String> pitches = new ArrayList<>(Arrays.asList("138", "129", "142"));
			pitches.sort(Comparator.naturalOrder());
//			pitches.sort(Comparator.reverseOrder());
			
			System.out.println(pitches);		// 129, 138, 142
		}	
	}
728x90
반응형

'Language > Java' 카테고리의 다른 글

Java - Set  (0) 2023.03.25
Java - Map  (0) 2023.03.25
Java - Array  (0) 2023.03.25
Java 자료형 - StringBuffer  (0) 2023.03.25
Java 자료형 - number, boolean, char, String  (0) 2023.03.24

+ Recent posts