카테고리 없음

[Java] List 인터페이스 정리

생선묵김치찌개 2022. 11. 2. 16:04

 

 

컬렉션 프레임 워크 : 자료구조를 자바 JDK에서 구현해 놓은것

 

Collection

List에서 최대/최소값 구하기

 

max(List L) / min(List L) : List에 최대,최솟값을 반환

 

 

★shuffle(List L) : List를 랜덤으로 섞음

 

 

List

ArrayList, Vector, LinkedList 정렬하기

 

List.sort(Comparator c)

Comparator c 에 들어갈수 있는것들

  1. Comparator.naturalOrder() : 오름차순
  2. Comparator.reverseOrder() : 내림차순
  3. String.CASE_INSENSITIVE_ORDER : 대소문자 구분없이 오름차순
  4. Collections.reverseOrder(String.CASE_INSENSITIVE_ORDER) : 대소문자 구분없이 내림차순

 

 

https://hianna.tistory.com/569

 

[Java] ArrayList 정렬하기 (오름차순, 내림차순, 사용자 정의)

Collections.sort() 오름차순으로 정렬하기 내림차순으로 정렬하기 대소문자 구분없이 정렬하기 List.sort() - Java 8 이후 오름차순으로 정렬하기 내림차순으로 정렬하기 대소문자 구분없이 정렬하기 사

hianna.tistory.com

 

ArrayList

 

두 작업이 동시에 실행되는 멀티스레드 환경이 아닌경우 주로 사용

 

선언

ArrayList <wrapper Type> arr = new ArrayList <wrapper Type>(); //1차원
ArrayList<ArrayList<wrapper Type>> arr_2d = new <ArrayList<wrapper Type>(); //2차원

 

데이터 추가

add(Object) : ArrayList에 Object 추가

add(int idx, Object) : ArrayList idx 번째에 Object 추가

addAll(Collection c) : 주어진 컬렉션의 모든 객체를 저장

import java.util.ArrayList;

public class ArrayList {
	public static void main(String[] args)  {
		ArrayList<String> arr = new ArrayList<>();
		
		arr.add("Hello");
		arr.add("Hello");
		arr.add(1, "World"); //1번째 인덱스에 World 추가
		
		System.out.print(arr);
	}
}

 

데이터 변경

set(int idx, Object) : ArrayList idx번째에 Object로 변경

import java.util.ArrayList;

public class ArrayList {
	public static void main(String[] args)  {
		ArrayList<String> arr = new ArrayList<>();
		
		arr.add("Hello");
		arr.add("Hello");
		arr.add("Hello");
		
		System.out.println("초기값 : " + arr); //Hello, Hello, Hello
		
		arr.set(1, "World");

		System.out.println("변경된 값 : " + arr); //Hello, World, Hello

 

데이터 삭제

remove(Object) : Object를 삭제

remove(int idx) :  ArrayList idx 번째 값을 삭제

clear() : ArrayList 모든 값을 삭제

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		System.out.println("초기값 : " + al); // Hello, World, Hello, World
		
		al.remove("Hello");

		System.out.println("1번 삭제 : " + al); // World, Hello, World

		al.remove(1); 

		System.out.println("2번 삭제 : " + al); // World, World
		
		al.clear();

		System.out.println("3번 삭제 : " + al); // ..
	}
}

 

List 크기 구하기

size() (int 반환)

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		System.out.println("ArrayList의 크기 : " + al.size()); .// 4출력
	}
}

 

값 가져오기

get(int idx)

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		System.out.println(a1.get(1)); //World 출력
	}
}

 

 

List의 값을 출력하는 2가지 방법

1. for문 + get(idx) 사용

2. Iterator 사용

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
        for (String str : al)
            System.out.print(str + " ");

        System.out.println();
        
        Iterator iter = al.iterator();
        while(iter.hasNext()){
            System.out.print(iter.next() + " ");
        }
	}
}

 

값 검색하기

contains(Object) (boolean 반환) : Object가 ArrayList에 포함되어 있으면 True 반환

indexOf(Object) (int 반환) : Object가 ArrayList에 포함되어 있는 위치 반환

= 보통 ArrayList<String>에서 사용

 

import java.util.ArrayList;

public class ArrayListDemo {
	public static void main(String[] args)  {
		ArrayList<String> al = new ArrayList<>();
		
		al.add("Hello");
		al.add("World");
		al.add("Hello");
		al.add("World");
		
		System.out.println("값 검색(contains) : " + al.contains("Hello")); //true 반환
		System.out.println("값 검색(indexOf) : " + al.indexOf("World")); //1 반환
	}
}

 

isEmpty() (boolean 반환) : ArrayList 비어 있는지 확인

 

Object.subList(int start, int last) (object의 값을 start부터 last-1까지 반환)

사용 방법

※ 주의할점 : new로 새로운 객체 만들지 않고 그냥 sublist로 넘기면  arr의 값이 바뀌면 arr2값도 바뀌어서 ConcurrentModificationException 에러 발생함

 

Vector() = 지금은 잘 안씀

멀티 스레드환경인 경우 주로 사용

https://crazykim2.tistory.com/570

 

[JAVA] Vector의 개념 및 사용법

안녕하세요 이번 포스팅에서는 Vector에 대해서 알아보겠습니다 목차 Vector란? Vector 선언하기 Vector 값 추가하기 Vector 값 변경하기 Vector 값 제거하기 Vector 크기 구하기 Vector 값 출력하기 Vector란? Vec

crazykim2.tistory.com

 

 

stack()

선언

Stack stq = new Stack();

 

주요 메서드

 

1. empty() (boolean 반환) : 스택이 비어있으면 true 반환

 

2. peek() (객체 반환) : 스택 맨 위에 저장된 객체 반환

 

※주의 : 비었을때 EmptyStackException 발생

 

3. pop() (객체 반환) : 스택의 맨 위에 저장된 객체 버림

 

※주의 : 비었을때 EmptyStackException 발생

 

4. push() (객체 반환) : 스택 맨위에 객체 저장

 

5. search(Object o) : 스택에 주어진 객체 o를 찾아서 위치를 반환

 

※주의 : 스택의 위치는 1부터 시작함