ArrayList의 메소드 예제들

public class ListTest1 {
public static void main(String[] args) {
	/* 문자열을 저장할 ArrayList를 생성
	 <> 가 들어간 클래스는 제네릭 클래스
	 제네릭클래스 : 멤버변수/메소드의 타입이 객체를 생성할 때 결정되는 클래스, 타입을 클래스로 해야 한다. 일반 변수X =>Wrapper class 사용하기
	 => <>안에있는 클래스에 따라서 ArrayList저거의 타입이 결정되는 클래스 종류를 제네릭 클래스라고 함
	  */
	ArrayList<String> list = new ArrayList<String>(10);	//10개짜리 ArrayList에 list를 만듬

	//.add() : 리스트에 추가
	for(int i=0; i<10; i++) {
		list.add("간식");
	}
	list.add("아이스크림");		//위에서 10개짜릴 만들었는데, 11번째도 추가가 가능=> 자동으로 크기를 늘림

	//.get(번지): 번지에 있는 값을 가져옴
	System.out.println(list.get(10));	//아이스크림 출력 //0~9번지가 10개, 10번지는 11개째

	//.size() : 현재의 사이즈(지금까지 값이 얼마나 들어가있는지)를 알 수 있음 => size로 쓰고 length아님, 소괄호()있음
	System.out.println(list.size());   //현재 list의 크기 11
	list.add("애플민트에이드");
	System.out.println(list.size());   //list크기 12

	list.add(10,"체리에이드");							//10번지에 추가함
	System.out.println("리스트 크기: " + list.size());	//길이가 +1 늘었음 =>13
	//위에서 10번지에 체리에이드 추가 => 10번지 값 : 체리에이드가되고, 원래있던 10번지 값은 11번지로 밀린거임 => 중간에 껴넣기같은 것
	System.out.println(list.get(10));

	//set(번지,값) : 번지에 값을 설정(덮어쓰기)
	list.set(10, "과자");					//체리에이드를 덮어쓰고 => 과자 가 됨.
	System.out.println(list.get(10));	//과자
	System.out.println(list.size());	//그대로 13유지

	//indexOf(값) : 값이 리스트에 있는지 없는지 확인하여 있으면 번지를 없으면-1을 반환
	// 해당 클래스의 equals를 호출하여 같은지를 확인
	//String클래스서 있었던 메소드 여기도 있는데, 완전 똑같지는 않아
	System.out.println("리스트에 체리에이드는 "+ list.indexOf("체리에이드") + "번지");			//-1 => 없다
	System.out.println("리스트에 애플민트에이드는 "+ list.indexOf("애플민트에이드") + "번지");	//12
	System.out.println("리스트에 간식이 "+ list.indexOf("간식") + "번지");                 //0번지(제일앞에있는것만나오는듯)

	//contains(값) : 값이 리스트에 있는지 없는지 확인하여 알려주는 메소드, equals()를 이용
	System.out.println("리스트에 애플민트에이드가 있다? "+ list.contains("애플민트에이드"));		//true
	System.out.println("리스트에 체리에이드가 있다? "+ list.contains("체리에이드"));			//false

	//remove(번지)  : 해당 번지의 값을 제거
	//remove(값)   : 값과 일치하는 내용을 제거
	System.out.println("리스트 10 번지: " + list.get(10));	//과자
	list.remove(10);									//번지 값 삭제
	System.out.println("리스트 10 번지: " + list.get(10));	//아이스크림
	list.remove(10);									//번지값 삭제
	System.out.println("리스트 10 번지: " + list.get(10));	//애플민트에이드

	list.remove("애플민트에이드");							//값 삭제
	System.out.println(list.contains("애플민트에이드")); //false =>삭제되서 없음

	//clear() : 리스트를 (전체) 비움
	list.clear();
	System.out.println("리스트 크기: " + list.size());		//비워서 0됨

	//isEmpty() : 리스트가 비어있는지 알려주는 코드
	System.out.println("리스트가 비어있습니까? " + list.isEmpty());	//위에서 비워서 없어서 true나옴

 }
}

오늘의 할 일을 저장하는 리스트를 생성한 후, 오늘의 할 일을 입력받고 다 받은 후에 출력하는 코드

import java.util.ArrayList;
import java.util.Scanner;

public class ListTest2 {

	public static void main(String[] args) {
	/*오늘의 할 일을 저장하는 리스트를 생성한 후, 오늘의 할 일을 입력받고 다 받은 후에 출력하는 코드를 작성하세요.
	 * 오늘의 할 일은 종료를 입력하면 입력을 종료하고, 출력하면 됨.
	 * 
	 * 예시>
	 * 오늘의 할 일 입력 : 출근
	 * 오늘의 할 일 입력 : 오전수업
	 * 오늘의 할 일 입력 : 점심
	 * 오늘의 할 일 입력 : 오후수업
	 * 오늘의 할 일 입력 : 퇴근
	 * 오늘의 할 일 입력 : 종료
	 * 
	 * 오늘의 할일 
	 * 1. 출근
	 * 2. 오전수업
	 * 3. 점심
	 * 4. 오후수업
	 * 5. 퇴근
	 * */
		
		Scanner scan = new Scanner (System.in);
		ArrayList<String> toDoList = new ArrayList<String>();
		
		while(true){
			System.out.print("오늘의 할 일 입력: ");
			String list = scan.next();
			if(list.equals("종료")) {
				break;
			}
			toDoList.add(list);
		}
		for(int i=0; i<toDoList.size(); i++) {
			System.out.println((i+1)+". "+toDoList.get(i));
		}
	
	}	
}

리스트에서 indexOf()와 contains 메소드를 잘 활용하려면 해당 클래스에서 equals를 오버라이딩해야한다

import java.util.ArrayList;

public class ListTest3 {

	public static void main(String[] args) {
		/* 리스트에서 indexOf()와 contains 메소드를 잘 활용하려면 해당 클래스에서 equals를 오버라이딩해야한다. */

		ArrayList<Student> list = new ArrayList<Student>();		//class이름이 <>안에
		//Student클래스의 std1,2를 Student클래스생성자를 통해 변수 선언
		Student std1 = new Student(1,1,1,"홍길동"); //(grade,classNum,num,name)
		Student std2 = new Student(1,1,1,"홍길동");
		
		//list에 std1을 저장
		list.add(std1);
		
		**//같은 값을 가지고있지만, equals를 오버라이딩 하지 않으면 다르다고 값을 출력함 => 오버라이딩하면 같다고 인식해줌(hashcode , equals)**
		System.out.println("리스트에 학생 정보가 있습니까? " + list.indexOf(std2)); 	//값: -1(없음) => 0번지
		System.out.println("리스트에 학생 정보가 있습니까? " + list.contains(std2)); 	//값: false => true
		**//오버라이딩 후, 값이 같다고 바뀜**
		
		
		
		
	}
}
class Student{
	int grade;
	int classNum;
	int num;
	String name;
	
	public Student(int grade, int classNum, int num, String name) {
		super();
		this.grade = grade;
		this.classNum = classNum;
		this.num = num;
		this.name = name;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + classNum;
		result = prime * result + grade;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + num;
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Student other = (Student) obj;
		if (classNum != other.classNum)
			return false;
		if (grade != other.grade)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (num != other.num)
			return false;
		return true;
	}
}