JAVA/개념정리

ArrayList

inderrom 2022. 10. 28. 13:54

1)

package kr.or.ddit.basic;

import java.util.ArrayList;

public class ArrayList01 {

	public static void main(String[] args) {
		// ArrayList는 기본적인 사용법이 Vector와 같다.
		
		ArrayList list1 = new ArrayList();
		
		// add()메서드를 이용해서 추가한다.
		list1.add("aaa");
		list1.add("bbb");
		list1.add(123);
		list1.add("k");
		list1.add(true);
		list1.add(123.45);
		
//		System.out.println("list1 => " + list1.toString());
		System.out.println("list1 = > " + list1);
		System.out.println("seze => " + list1.size());
		
		// get()메서드로 데이터를 꺼내온다.
		System.out.println("1번째 자료 : " + list1.get(1));
		
		// 데이터 끼워넣기도 같다.
		list1.add(3,"zzz");
		System.out.println("list1 = > " + list1);
		
		// 데이터 변경하기
		String temp = (String)list1.set(3, "xxx");
		System.out.println(temp);
		System.out.println("list1 = > " + list1);
		
		//삭제도 같다.
		list1.remove(3);
		System.out.println("list1 = > " + list1);
		
		list1.remove("bbb");
		System.out.println("list1 = > " + list1);
		System.out.println("-------------------------------------------");
		
		// 제네릭을 사용할 수 있다.
		ArrayList<String> list2 = new ArrayList<String>();
		list2.add("AAAA");
		list2.add("BBBB");
		list2.add("CCCC");
		list2.add("DDDD");
		list2.add("EEEE");
	
		for(int i=0; i < list2.size();i++) {
			System.out.println(i + " ==> " + list2.get(i));
		}
		System.out.println("------------------------------------");
		
		for(String str : list2) {
			System.out.println(str);
		}
		System.out.println("------------------------------------");
		
		// contains(비교객체) ==> List에 '비교객체'가 있으면 true, 없으면 false를 반환한다.
		System.out.println("DDDD값 : " + list2.contains("DDDD"));
		System.out.println("ZZZZ값 : " + list2.contains("ZZZZ"));
		System.out.println();
		
		// indexOf(비교객체), lastIndexOf(비교객체)
		// ==> List에 '비교객체'가 있으면 '비교객체'가 있는 'index값'을 반환하고 없으면 -1을 반환한다.
		// ==> indexOf()메서드는 검색을 앞에서 뒤쪽방향으로 하고,
		//		lastIndexOf()메서드는 뒤에서부터 앞쪽방향으로 한다.
		System.out.println("DDDD의 위치값 : " + list2.indexOf("DDDD"));
		System.out.println("DDDD의 위치값 : " + list2.lastIndexOf("DDDD"));
		System.out.println();
		System.out.println("KKKK의 위치값 : " + list2.indexOf("KKKK"));
		System.out.println("KKKK의 위치값 : " + list2.lastIndexOf("KKKK"));
		System.out.println("-----------------------------------------------");
		
		// toArray()		=> List 안의 데이터를 배열로 변환하여 반환한다.
		//				=> 반환값은 기본적으로 Object형 배열로 반환한다.
	
		Object[] strArr = list2.toArray();
//		String[] srtArr = (String[])list2.toArray(); // 오류
		// toArray(new 제네릭타입[0] ==> 제네릭타입의 배열로 반환한다.
		
		System.out.println("배열의 크기 :" + strArr.length);
		for (int i = 0; i < strArr.length; i++) {
			System.out.println(i + "번째 자료 : " + strArr[i]);
		}
		System.out.println("----------------------------------");
		
		String[] strArr2 = list2.toArray(new String[0]); //이렇게 해야 오류가 안남 
		
		for(String str : strArr2) {
			System.out.println(str);
		}
	}
}

2)

package kr.or.ddit.basic;

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

/*
  문제) 5명의 사람 이름을 입력 받아서 ArrayList에 저장한 후에
  		이들 중 '김'씨 성의 이름을 모두 출력하시오.
  		(단, 입력은 Scanner객체를 이용한다.)
*/

public class ArrayList02 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		ArrayList<String> arr = new ArrayList<String>();
		System.out.println("5명의 이름을 입력하세요 >>");
		for(int i = 0; i <5; i++) {
			System.out.println(i + "번째 사람 이름 : ");
//			String name = sc.nextLine();
//			arr.add(name);
			arr.add(sc.next());   //next() 와 nextList() 의 차이점은 나중에 알려주신다고 함
		}
		
		
//		System.out.println();  
//		System.out.println("김씨 성을 가진 사람 리스트");
//		for(int i =0; i < arr.size(); i++) {
//			if(arr.get(i).substring(0,1).equals("김")) {
//				System.out.println(arr.get(i));
//			}
//		}
//		
//		System.out.println(); //2번째 방법~~
//		System.out.println("김씨성을 가진 사람 리스트");
//		for(int i =0; i < arr.size(); i++) {
//			if(arr.get(i).startsWith("김")) {
//				System.out.println(arr.get(i));
//			}
//		}
		
//		System.out.println();  
//		System.out.println("김씨 성을 가진 사람 리스트");
//		for(int i =0; i < arr.size(); i++) {
//			if(arr.get(i).charAt(0) == '김') {
//				System.out.println(arr.get(i));
//			}
//		}
		
		System.out.println();  
		System.out.println("김씨 성을 가진 사람 리스트");
		for(int i =0; i < arr.size(); i++) {
			if(arr.get(i).indexOf("김") == 0) {
				System.out.println(arr.get(i));
			}
		}
		
		
//		System.out.println(); //향상된 for문
//		System.out.println("김씨성을 가진 사람 리스트");
//		for(String n:arr) {
//			if(n.substring(0,1).equals("김")) {
//				System.out.println(n);
//			}
//		}
	}
}

3)

package kr.or.ddit.basic;

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

/*
 * 문제) 5명의 별명을 입력 받아 ArrayList에 저장하고 이들 중 별명의 길이가 제일 긴 별명을 출력하시오.
 * 		(단, 각 별명의 길이는 모두 다르게 입력한다.)
 */

public class ArrayList03 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		ArrayList<String> nameList = new ArrayList<String>();
		
		System.out.println("5명의 별명을 입력하세요 >> ");
		for(int i = 0; i<5; i++) {
			System.out.println(i + "번째 별명 : " );
			nameList.add(sc.next());
		}
		
		System.out.println();
		System.out.println("가장 긴 별명은 >>");
		
		//제일 긴 별명이 저장될 변수를 선언하고 List의 첫번째 값으로 초기화 한다.
		String maxName = nameList.get(0);
		
		for(int i =0; i < nameList.size(); i++) {
			if(nameList.get(i).length() > maxName.length()) {
				maxName = nameList.get(i);
			}
		}
		System.out.println(maxName);
		
	}

}

4)

package kr.or.ddit.basic;

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

/*
 * 문제) 5명의 별명을 입력 받아 ArrayList에 저장하고 이들 중 별명의 길이가 제일 긴 별명을 출력하시오.
 * 		(단, 각 별명의 길이는 같을 수도 있다.)
 */
public class ArrayList04 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		ArrayList<String> nameList = new ArrayList<String>();
		
		System.out.println("5명의 별명을 입력하세요 >> ");
		for(int i = 0; i<5; i++) {
			System.out.println(i + "번째 별명 : " );
			nameList.add(sc.next());
		}	
		System.out.println();
			
		// 제일 긴 별명의 길이가 저장될 변수를 선언하고 첫번째 별명의 길이로 초기화 한다.
		int maxLength = nameList.get(0).length();
		
		for(int i = 1; i < nameList.size(); i++) {
			if(maxLength < nameList.get(i).length()) {
				maxLength = nameList.get(i).length();
			}
		}
		//제일 긴 길이들과 같은 길이를 같는 애를 찾아서 출력
		System.out.println("제일 긴 별명들...");
		for(String name : nameList) {
			if(name.length() == maxLength) {
				System.out.println(name);
			}
		}
	}
}