본문 바로가기

프로그램언어/자바

Collection 계열 클래스2

List 계열

List 계열은 순서가 있고 중복이 허용된다.

List 인터페이스의 주요 구현 클래스에는 ArrayList, LinkedList가 있다.

 

 

함수 설명
boolean add(E e) 요소를 추가
void add(int index, E e) 특정 위치에 전달된 요소를 추가
void clear() 모든 요소를 제거
boolean contains(Object o) 전달된 객체를 포함하고 있는지를 확인
boolean equals(Object o) 전달된 객체가 같은지를 확인
E get(int index) 특정 위치에 존재하는 요소를 반환
boolean isEmpty() 비어있는지를 확인
Iterator<E> iterator() 반복자(iterator)를 반환
boolean remove(Object o) 전달된 객체를 제거
boolean remove(int index) 특정 위치에 존재하는 요소를 제거
E set(int index, E e) 특정 위치에 존재하는 요소를 전달받은 객체로 대체
int size() 요소의 총 개수를 반환
Object[] toArray() 모든 요소를 Object 타입의 배열로 반환

 

List에 요소를 추가하고 삽입하고 출력해보자.

import java.util.ArrayList;

import java.util.List;

 

public class ex01 {

 

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();

        list.add("A");

        list.add("B");

        list.add("C");

        System.out.println(list);

 

        //3번째 요소에 삽입하기

        list.add(2,"X");

        System.out.println(list);

 

        //첫번째 요소에 삽입하기

        list.add(0,"Y");

        System.out.println(list);

 

        for(String value : list)

            System.out.print(value + " ");

    }

}

실행 결과]
[A, B, C]
[A, B, X, C]
[Y, A, B, X, C]
Y A B X C 

 

List에서 요소를 추출하고 변경하고 삭제하고 요소의 총개수를 출력해보자.

import java.util.ArrayList;

import java.util.List;

 

public class ex01 {

 

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();

        list.add("100");

        list.add("200");

        list.add("300");

        System.out.println(list.get(0));

        System.out.println(list.get(2));

 

        list.add("400");

        System.out.println("기존 : " + list);

        // 3번째 요소의 값을 변경해보자

        list.set(3, "450");

        System.out.println("변경 : " + list);

        // 3번째 요소 삭제하기

        list.remove(2);

        System.out.println("삭제후 : " + list);

        // 요소의 총 개수구하기

        System.out.println("총 개수 : " + list.size());

    }

}

실행 결과]
100
300
기존 : [100, 200, 300, 400]
변경 : [100, 200, 300, 450]
삭제후 : [100, 200, 450]
총 개수 : 3

 

List에서 데이터를 정렬하고 요소들을 앞뒤를 반전시켜 출력하기

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

 

public class ex01 {

 

    public static void main(String[] args) {

        List<String> list = new ArrayList<>();

        list.add("홍길동");

        list.add("이순신");

        list.add("김철수");

        list.add("최영희");

        list.add("일지매");

 

        System.out.println("변경전 : " + list);

        // 오름차순으로 정렬

        Collections.sort(list);

        System.out.println("변경후(오름차순) : " + list);

 

        // 내림차순으로 정렬 (reverse()함수 앞뒤바꾸기)

       Collections.reverse(list);

       System.out.println("변경후(내림차순) : " + list);

    }

}

실행 결과]
변경전 : [홍길동, 이순신, 김철수, 최영희, 일지매]
변경후(오름차순) : [김철수, 이순신, 일지매, 최영희, 홍길동]
변경후(내림차순) : [홍길동, 최영희, 일지매, 이순신, 김철수]

 

import java.util.ArrayList;

import java.util.List;

 

public class ex01 {

 

    public static void main(String[] args) {

        List<String> list1 = new ArrayList<>();

        list1.add("A");

        list1.add("B");

        list1.add("C");

 

        List<String> list2 = new ArrayList<>();

        list2.add("A");

        list2.add("B");

 

        List<String> list3 = new ArrayList<>();

        list3.add("C");

        list3.add("D");

 

        //지정한 요소가 List에 포함되어 있는지 확인

        System.out.println(list1.contains("A"));

        System.out.println(list1.contains("D"));

        //모든 요소가 List에 포함되어 있는지 확인

        System.out.println(list1.containsAll(list2));

        System.out.println(list1.containsAll(list3));

    }

}

 

실행결과]
true
false
true
false

 

 

이 프로그램은 이름, 국어, 영어, 수학점수를 이용하여 합계와 평균을 출력하는 것이다. ArrayList를 이용하고 제네릭을 사용한 것으로 작성화 보자.

import java.util.Iterator;

import java.util.*;

 

class Student {

    String name;

    int kor, eng, math;

 

    Student(String name, int kor, int eng, int math) {

        this.name = name;

        this.kor = kor;

        this.eng = eng;

        this.math = math;

    }

 

    int getTotal() {

        return kor + eng + math;

    }

 

    float getAverage() {

        return (int) ((getTotal() / 3f) * 10 + 0.5) / 10f;

    }

    public String toString() {

        return name + "\t" + kor + "\t" + eng + "\t" + math

                 + "\t" + getTotal() + "\t" + getAverage();

    }

}

 

public class Main {

 

    public static void main(String[] args) {

        ArrayList<Student> list = new ArrayList<Student>();

        list.add(new Student("홍길동", 100, 100, 100));

        list.add(new Student("남궁성", 90, 70, 80));

        list.add(new Student("김자바", 80, 80, 90));

        list.add(new Student("이자바", 70, 90, 70));

        list.add(new Student("안자바", 60, 100, 80));

 

        Iterator it = list.iterator();

 

        System.out.println("이름\t국어\t영어\t수학\t합계\t평균");

        while (it.hasNext())

            System.out.println(it.next());

        }

    }

}

실행결과]
이름    국어    영어    수학    합계    평균

홍길동  100    100    100      300     100.0

남궁성  90       70     80       240     80.0

김자바  80       80     90       250     83.3

이자바  70       90     70       230     76.7

안자바  60       100   80       240     80.0

 

제품번호, 이름, 색상을 이용하여 ArrayList 클래스로 작성해보자.

import java.util.ArrayList;

import java.util.List;

import java.util.Iterator;

 

class Product {

    private String code;    //제품번호

    private String name;   //제품이름

    private String color;   //제품색상

 

    public Product(){

        this("10001","냉장고","메탈");

    }

 

    public Product(String code, String name,String color){

        this.code=code;

        this.name=name;

        this.color=color;

    }

 

    public String getCode() {

        return code;

    }

    public void setCode(String code) {

        this.code = code;

    }

 

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

 

    public String getColor() {

        return color;

    }

    public void setColor(String color) {

        this.color = color;

    }

}

 

public class Main {

 

    public static void main(String[] args) {

        ArrayList<Product> pList= new ArrayList<Product>();

        Product p1 = new Product();

        Product p2=new Product("10002","세탁기","은색");

        Product p3=new Product("10003","TV","검정색");

 

        pList.add(p1);

        pList.add(p2);

        pList.add(p3);

 

        Iterator<Product> it = pList.iterator();

 

        System.out.println("제품번호\t제품명\t색상");

        while (it.hasNext()) {

             Product pro = it.next();

             System.out.println(pro.getCode() + "\t" + pro.getName() + "\t" +
             pro.getColor());

        }

    }

}

실행결과]
제품번호  제품명   색상
10001     냉장고    메탈
10002     세탁기    은색
10003     TV         검정색

위와 같음

public class Main {

    public void getProdInfo(List<Product> list){

        System.out.println("제품번호\t제품이름\t제품색상");

        for(int i=0; i<list.size();i++){

            Product prod=(Product)list.get(i);

 

            System.out.print(prod.getCode() + "\t");

            System.out.print(prod.getName() + "\t");

            System.out.println(prod.getColor());

        }

    }

 

    public static void main(String[] args) {

        ArrayList<Product> pList= new ArrayList<Product>();

        Product p1 = new Product();

        Product p2 = new Product("10002","세탁기","은색");

        Product p3 = new Product("10003","TV","검정색");

 

        pList.add(p1);

        pList.add(p2);

        pList.add(p3);

 

        Main p = new Main();

 

        p.getProdInfo(pList);

   }

}

'프로그램언어 > 자바' 카테고리의 다른 글

Collection 계열 클래스4  (0) 2020.11.14
Collection 계열 클래스3  (0) 2020.11.14
Collection 계열 클래스1  (0) 2020.11.14
컬렉션 프레임워크 문제  (0) 2020.11.08
스윙 컴포넌트 그리기3  (0) 2020.11.05