ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] ArrayList 개념, 사용법 알아보기
    프로그래밍 언어/JAVA 2023. 6. 14. 09:58

     

    📑 ArrayList란?

     

    ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트이다. 일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는 점등이 유사하지만 한번 생성되면 크기가 변하지 않는 배열과는 달리 ArrayList는 객체들이 추가되어 저장 용량(capacity)을 초과한다면 자동으로 부족한 크기만큼 저장 용량(capacity)이 늘어난다는 특징을 가지고 있다. 

     

     

     

     

    📑 ArrayList 사용법

     

    package collection;
    
    
    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class ArrayListEx {
        public static void main(String[] args) {
    
            ArrayList list = new ArrayList(); //타입 미설정 Object로 선언된다.
            ArrayList<Student> members = new ArrayList<Student>(); // 타입설정 Student 객체만 사용 가능
            ArrayList<Integer> num = new ArrayList<Integer>();// 타입설정 int 타입만 사용 가능
            ArrayList<Integer> num2 = new ArrayList<>();// new에서 타입 파라미터 생략 가능 
            ArrayList<Integer> num3 = new ArrayList<Integer>(10);//초기 용량(capacity) 지정
            ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(1, 2, 3));//생성시 값 추가 
    
    
        }
    }
    
    class Student{
        private String name;
        private int age;
    
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }

     

    ArrayList list = new ArrayList()로 선언 후 내부에 임의의 값을 넣고 사용할 수도 있지만 이렇게 사용할 경우 값을 뽑아내기 위해서는 캐스팅연산이 필요하고 잘못된 타입으로 캐스팅을 한 경우 에러가 발생하기에 위와 같은 방식은 추천하지 않는다. ArrayList를 사용할시에는 ArrayList에 타입을 명시해주는것이 좋다. ArrayList<String> list = new ArrayList<String>();이라고 되어 있다면 String 객체들만 add되어질 수 있고 다른 타입 객체는 사용 불가능하다. 

     

    ✔ 제네릭스는 선언할 수 있는 타입이 객체 타입이다. int는 기본자료형이기 때문에 들어갈 수 없으므로 int를 객체화 시킨 wrapper 클래스를 사용해야 한다. 

     

     

     

    📑 ArrayList 값 추가 

     

    package collection;
    
    
    import java.util.ArrayList;
    import java.util.Arrays;
    
    public class ArrayListEx {
        public static void main(String[] args) {
    
            ArrayList list = new ArrayList(); //타입 미설정 Object로 선언된다.
            ArrayList<Student> members = new ArrayList<Student>(); // 타입설정 Student 객체만 사용 가능
    
            list.add(3);
            list.add(null);//null값도 add가능
            list.add(1, 10); //index 1에 10 삽입
    
            Student student = new Student("홍길동",14);
            members.add(student);
            members.add(new Student("워니", 27));
    
            System.out.println(list);
            System.out.println(members.toString());
    
        }
    }

     

     

    ArrayList에 값을 추가하려면 ArrayList의 add(index,value) 메서드를 사용하면 된다. index를 생략하면 ArrayList 맨뒤에 데이터가 추가되며 index 중간에 값을 추가하면 해당 인덱스부터 마지막 인덱스까지 모두 1씩 뒤로 밀려난다. 

     

    이경우 데이터가 늘어나면 늘어날수록 성능에 악영향이 미치기에 중간에 데이터를 insert 해야할 경우가 많다면 ArrayList보다는 LinkedList를 활용하는 방법이 더 좋다. 

     

     

    📑 ArrayList 값 삭제 

     

    ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
    list.remove(1); //index 1 제거 , [1, 3]
    list.clear(); //[]

     

    ArrayList에 값을 제거하려면 ArrayList의 remove(index)메서드를 사용하면 된다. remove() 함수를 사용하여 특정 인덱스의 객체를 제거하면 바로 뒤 인덱스부터 마지막 인덱스까지 모두 앞으로 1씩 당겨진다. 모든 값을 제거하려면 clear() 메서드를 사용하면 된다. 

     

     

    📑 ArrayList의 값 출력 

     

    ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
    
    System.out.println(list.get(0)); //0번째 index 출력
    
    for(Integer i : list){ //확장 for문을 통한 전체 출력
        System.out.println(i);
    }
    
    Iterator it = list.iterator(); //Iterator 선언
    while (it.hasNext()){ // 다음값이 있는지 체크
        System.out.println(it.next()); // 값 출력
    }

     

    ArrayList의 get(index) 메서드를 사용하면 ArrayList의 원하는 index의 값이 리턴된다. 전체출력은 대부분 for문을 통해 출력하고  Iterator를 사용해 출력할 수도 있다. 

     

     

    ArrayList의 값 출력은 이전에도 한 번 정리한적이 있다. 

     

    https://wonisdaily.tistory.com/232

     

    [JAVA] ArrayList 값 출력하기 ( 인덱스, forEach, 확장 for문)

    forEach와 확장 for문 예제를 정리할 겸 ArrayList에서 값 꺼내는 방법을 알아볼까 한다. package ex; import java.util.ArrayList; import java.util.Iterator; public class ForEach { public static void main(String[] args) { ArrayList list

    wonisdaily.tistory.com

     

     

     

    📑 ArrayList 값 검색

     

    ArrayList<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
    
    System.out.println(list.contains(1)); //list에 1이 있는지 검색 , true 
    System.out.println(list.indexOf(1)); // 1이 있는 index반환 없으면 -1  , 0

     

     

     ArrayList에 찾고자 하는 값을 검색하려면 ArrayList의 contains(value) 메서드를 사용하면 된다. 만약 값이 있다면 true가 리턴되고 없다면 false가 리턴된다. 값이 있는 index를 찾으려면 indexOf(value) 메서드를 사용하면 되고 만약 값이 없다면 -1이 리턴된다. 

     

     


    [참고] https://coding-factory.tistory.com/551

    반응형

    댓글

Designed by Tistory.