거북이처럼 천천히

Java - List 본문

Back-end/Java 개념

Java - List

유로 청년 2022. 6. 2. 13:51

List

리스트(List)는 배열(Array)과 비슷한 자바 자료형이지만, 배열보다 편리한 기능을 많이 갖고 있다.

 

What is different between Array and List?

  • 리스트(List)와 배열(Array)의 가장 큰 차이점은 배열(Array)는 크기가 정해져 있어 정적(Static)인 것에 반해
    리스트(List)는 크기가 정해져 있지 않아 동적(Dynamic)하게 변한다는 것이다.
  • List 자료형에는 ArrayList, Vector, LinkedList 등의 List interface를 구현한 자료형이 있다.

 

ArrayList

1. add method

  • add method를 통해 크기가 정해져 있지 않은 ArrayList object에 원소를 추가 및 수정할 수 있다.
  • ArrayList<자료형> = new ArrayList<>();
  • J2SE 5.0 버전 이후부터 객체를 포함하는 자료형에도 어떤 객체를 포함하는지에 대해서 명확하게 표현할 것을
    권고하고 있다. 따라서 해당 <> 내에 해당 객체안의 자료형을 표시한다.
import java.util.Scanner; //get class "Scanner"
import java.util.ArrayList;

public class HelloWorld {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in); // create object for scanner
		ArrayList<String>Subjects = new ArrayList<>();
		ArrayList<String>Scores = new ArrayList<>();
		int sumOfScores = 0;
		double meanOfScores;
		
		while(true) {
			String nameOfSubject;
			System.out.println("Enter Name of Subject : (if you want to quit, Enter !)");
			nameOfSubject = scan.nextLine();
			
			if(nameOfSubject.equals("!")) {
				break;
			}else {
				Subjects.add(nameOfSubject);
			}
			
		}
		
		System.out.printf("List \"Subject\" : " + Subjects + "\n");
		System.out.printf("Size of List : %d \n", Subjects.size());
	
		for(int i = 0; i < Subjects.size(); i++) {
			String inputScore;
			
			System.out.printf("Enter a score of %s :", Subjects.get(i));
			inputScore = scan.nextLine();
			
			Scores.add(inputScore);
		}
		
		System.out.printf("List \"Scores\" : " + Scores + " \n");
		System.out.printf("Size of List : %d \n\n", Scores.size());
		
		for(int i = 0; i < Scores.size(); i++) {
			int scoreOfSubject = Integer.parseInt(Scores.get(i));
			
			sumOfScores += scoreOfSubject;
		}
		
		meanOfScores = sumOfScores / Scores.size();
		
		System.out.printf("Sum of subject : %d \n", sumOfScores);
		System.out.printf("Mean of subjects : %f \n", meanOfScores);
	}
}
  • scanner 클래스, ArrayList 자료형은 java.util 패키지에 속해 있기 때문에 import 메소드를 이용하여 java.util 패키지를 import 해야 한다.
  • "Subjects", "Scores" ArrayList 자료형을 선언하고, 사용자로 부터 값을 하나하나 입력 받는다.
  • add 메소드를 통해 입력받은 값을 ArrayList에 하나씩 추가한다.
  • get 메소드를 통해 ArrayList의 원소 값들을 하나씩 추출할 수 있다.
  • size 메소드를 통해 ArrayList의 길이를 반환받을 수 있다.
  • 배열(Array)인 경우, [ ] (대괄호)를 이용해서 원소 값들에게 접근할 수 있지만, 리스트(List)는 get 메소드를 이용해야만이 원소 값들에게 접근할 수 있다. 또한 배열(Array)인 경우, .length 속성을 통해 배열의 길이를 반환받을 수 있지만, 리스트는 size 메소드를 이용해야지만이 리스트의 길이(사이즈)를 반환받을 수 있다.

 

2. get method

  • get 메소드를 통해 ArrayList의 특정 인덱스 값을 추출할 수 있다.

 

3. size method

  • size 메소드를 통해 ArrayList의 원소 갯수(List의 길이)를 반환 받을 수 있다.

 

4. contains method

  • contains 메소드를 통해 리스트 안에 해당 항목(원소)가 있는지 여부를 판별하여 그 결과를 boolean으로 반환받는다.

 

5. remove method

  • remove 메소드에는 2가지 방식이 있다.  
        1. remove(원소)
        2. remove(인덱스)

  5.1. remove(원소)리스트에서 원소에 해당되는 항목을 삭제하고 삭제한 결과(true, false)를 리턴한다.

System.out.println(Subjects.removes("Math"));  // true 출력

        ▶ "Math" 라는 항목을 성공적으로 삭제하면 true를 리턴한다.

 

5.2. remove(인덱스)해당 인덱스의 항목을 삭제하고 삭제된 항목을 리턴한다.

System.out.println(Subjects.removes(0));   // Korean 출력

        ▶ Subjects list의 첫 번째 항목은 "Korean" 이기 때문에 "Korean"이 삭제된 후, "Korean"을 리턴한다.

 

6. set method

  • set 메소드는 리스트내에 존재하는 원소 값을 다른 값으로 대체할 때 사용된다.
// Bubble sort
String temp = names.get(j);
names.set(j, names.get(j+1));
names.set(j+1, temp);

'Back-end > Java 개념' 카테고리의 다른 글

Java - for each 문  (0) 2022.06.12
Java - List (2)  (0) 2022.06.03
Java - 배열  (0) 2022.06.01
Java - String Formatting  (0) 2022.05.30
Java - 문자열  (0) 2022.05.30