Paradox Simulation

728x90
반응형

리스트란?

배열과 비슷하지만, 배열의 한계를 극복하기 위해 만들어진 기능.

배열은 사용하기 위해서 초기에 크기를 입력해야 한다.

 

예를 들자면, 배열의 크기를 10으로 정했다면, 10개 이상의 값을 담기엔 무리가 있다.

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

 

List의 탄생은 프로그래밍 시 항상 크기를 알 수 없는 것인데,

그래서 List 가 생겼다고 볼 수 있다.

List 같은 경우, 메모리가 허용하는 한 무제한으로 추가할 수 있다.

 

List의 경우 다음과 같이 사용 가능하다.

 

List & ArrayList

/*
 * @author coderBasic
 */
public class listTest {
	public static void main(String[] args) {
    	List<String> tempList = new ArrayList<String>();
    	
        tempList.add("첫번째");
        tempList.add("두번째");
        tempList.add("세번째");
        tempList.add("네번째");
        
        for (String temp: tempList)
        	System.out.println(temp);
            
        System.out.println("전체 출력 : " + tempList);
    }

}

 

출력 〉첫번째
두번째
세번째
네번째
전체 출력 : [첫번째, 두번째, 세번째, 네번째]

여기서 for each 형태가 사용되는데, 해당 내용은 다음에서 정리해두었다.

 

2023.02.02 - [프로그래밍/JAVA 프로그래밍] - Java - for each

 

 ArrayList와 같은 자료형은 배열과 다르게 값을 넣을 땐 add 메서드를 사용하여 저장하게 된다.

 

위 소스에서 보듯이 testList.add(넣을 값); 이런 식으로 사용이 된다.

 

또한 배열과 같이 0번째부터 시작하는데, List 형에 add를 할 때 그냥 add 하고 넣을 값을 넣게 된다면 순서에 따라서 맨 뒤에 값을 저장하게 되어있지만, 순서를 바꾸고 싶고 먼저 넣은 값들을 뒤로 밀고 싶다면 다음과 같이 사용할 수 있다.

 

List.add

 

tempList.add(0, "test");

tempList.add(1, "test2");

 

이렇게 넣는다면 0번째에 test, 1번째에 test2를 저장하게 된다.

 

값을 저장하는 기능은 이제 알게 되었는데, 그럼 그 값을 꺼내는 방법이 무엇일까?

 

add 가 넣는 거라면 값을 꺼내는 방법은 get이라는 기능을 이용한다.

 

List.get

System.out.println(tempList.get(1));

ArrayList의 get 메서드를 이용하여 특정 인덱스의 값을 추출이 가능하다.

 

그다음으로는 List 형의 개수를 리턴하는 방법이다.

 

해당 메서드는 size()로 사용한다.

 

주로 for문에서 List의 크기만큼 돌 때 사용하게 된다.

 

for문에서의 List 내용 출력하기

for ( int i = 0; i < tempList.size() ; i++)
	System.out.println(tempList.get(i));
출력 〉test
test2
첫번째
두번째
세번째
네번째

 

위 코드를 실행하게 된다면 List에 저장된 개수만큼 for문이 실행되며, 값을 가져오는 코드를 작성했다.

다음은 리스트 안에 있는 내용 중에 원하는 값이 있는지 여부에 대해서 boolean형으로 반환하는 메서드이다.

 

List.contains

if (tempList.contains("test"))
	System.out.println("존재합니다.");
출력 〉존재합니다.

 

다음으로는 리스트 안의 내용을 지우는 방법에 대해서 설명드리겠다.

 

 remove 메서드를 이용한다.

 

List.remove

System.out.println(tempList.remove(0));
출력 〉test

 

해당 메서드를 이용하면 해당 인덱스를 삭제하고 그 값을 리턴했다.

 

 

 

추가적인 방법으로 배열에 있는 내용을 List형에 넣는 방법이 있다.

 

배열내용을 List에 넣기

import java.util.*;

/*
 *@author Iterator
 */
public class testArrayList {
	public static void main(String[] args){
    	String[] tempArray = {"test1", "test2", "test3"};
    	ArrayList<String> tempArrayList = new ArrayList<>(Arrays.asList(tempArray));
        System.out.println(tempArrayList);
    }

}
출력 〉[test1, test2, test3]

 

 

Arrays에 있는 asList 메서드를 이용하여 String[] 자료형을 그대로 ArrayList에 옮긴 방법이다.

 

또한 다음과 같은 방법으로도 사용이 가능하다.

 

배열내용을 List에 넣기 2번째 방법

import java.util.*;

/*
 *@author Iterator
 */
public class testArrayList {
	public static void main(String[] args){
    	ArrayList<String> tempArrayList = new ArrayList<>(Arrays.asList("test1", "test2", "test3"));
        System.out.println(tempArrayList);
    }

}
출력 〉[test1, test2, test3]

 

해당 출력을 해보면 알듯이 원하는 대로 출력이 안 될 경우가 있다.

한 줄로 출력하고 싶을 때처럼 출력할 수 있는 방법이 있다.

여기서는 " " 띄어쓰기를 이용하여 출력하겠다.

 

String 클래스에는 join이라는 메서드가 있다.

 

없을 때와 있을 때의 차이가 있는 편인데 한번 코딩해보도록 하겠다.

 

String.join 없이 문자열 붙이기

import java.util.*;

/*
 *@author Iterator
 */
public class joinTest {
    public static void main(String[] args) {
        ArrayList<String> tempArrayList = new ArrayList<>(Arrays.asList("test1", "test2", "test3"));
        String temp = "";
        for (int i = 0; i < tempArrayList.size(); i++) {
            temp += tempArrayList.get(i) + " ";
        }
        temp = temp.substring(0, temp.length() - 1);  // 마지막 띄어쓰기 제거
        System.out.println(temp);
    }
}
출력 〉[test1, test2, test3]

 

위 예시 코드는 tempArrayList 만큼 루프를 돌고 하나의 문자열로 만드는 과정을 나타낸다.

하지만 더 간단하게 하는 방법이 없을까?

 

아까 말하려던 String.join 메서드를 이용하면 조금 더 간단했다.

 

String.join 사용

import java.util.*;

/*
 *@author Iterator
 */
public class joinTest {
    public static void main(String[] args) {
        ArrayList<String> tempArrayList = new ArrayList<>(Arrays.asList("test1", "test2", "test3"));
        String temp = String.join(" ", tempArrayList);
        System.out.println(temp);
    }
}
출력 〉[test1, test2, test3]

 

String.join 메서드를 이용하게 되면 for 문 및 여러 행들이 간결하게 정리되는 모습을 볼 수 있다.

 

 

728x90
반응형
250x250
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band