[ ArrayList ]
package collection;
import java.util.ArrayList; // import*
// 자료구조
// 컬랙션 하위 arrayList타입
// 이름도 배열이 들어갑니다. 배열과 흡사합니다. (배열과 다르게 정해진 길이가 없음)
// 배열보다 쉽습니다.
public class ArrayList01 {
public static void main(String[] args) {
// 배열 선언
int[] arr = new int[10];
// List -> ArrayList
ArrayList<Integer> arr01 = new ArrayList<Integer>(); // 생성할때 타입결정하는데 일단은 int타입으로!
// 값대입 = add()
arr01.add(10); // 배열처럼 생각한다면 값 10은 arr01의 첫번째 자리(0번지)에 들어감
arr01.add(15); // 값 15 -> arr01의 두번째자리(1번지)
arr01.add(20); // 값 20 -> arr01의 세번째자리(2번지) -> add로 추가하는 순서대로 들어감
// arr01.add("홍길동"); // 타입이 int가 아니라 string이라서 안됨!
// arr01.add("10"); // 타입이 int가 아니라 string이라서 안됨!
// arr01.add((byte) 100); // 배열이면 가능한데 얘는 안됨. 무조건 타입일치**
int num = 100;
arr01.add(num); // 변수(int타입이라면) 가능
System.out.println(arr01); // [10, 15, 20] 주소값이 아니라 실제값나옴
for (int i = 1; i <= 10; i++) { // arr01에 1~10까지 넣기
arr01.add(i);
}
System.out.println(arr01); // [10, 15, 20, 100, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
* ArrayList<Integer> arr01 = new ArrayList<>(); => 타입은 앞부분에만 적어줘도 됨
* arr01.get(0); ---> Integer java.util.ArrayList.get(int index)
int는 p타입 , Integer는 R타입
[ .add() 값 추가 & .get() 값 가져오기 & .size() 길이 ]
// get() _하나씩 출력해보쟝
int num1 = arr01.get(0);
System.out.println(num1); // 10
System.out.println(arr01.get(3)); // 100
// 길이 뽑기
System.out.println(arr01.size()); // list의 길이 = 14
// 마지막 index에 저장된 10을 출력하려고 한다면?
System.out.println(arr01.get(arr01.size()-1)); // arr01.size()-1 = 14-1 = 13 (마지막번지수)
// for문 이용해서 출력하기
for (int i = 0; i < arr01.size(); i++) {
System.out.println(arr01.get(i)); // *list 안의 값들 출력
}
( ArrayList 생성연습 )
// list타입 arr02라고 만들어주기
// 홀수를 저장하되 저장된 값이 20개가 되면 멈춰주세요 => arr02.size() = 20
// 출력
ArrayList<Integer> arr02 = new ArrayList<Integer>();
// 방법1
int number = 1;
while(arr02.size() < 20) {
arr02.add(number);
number +=2;
}
// 방법2
for (int i = 0; arr02.size() < 20; i++) {
arr02.add( (2*i) + 1);
}
System.out.println(arr02); // [ 1, 3, ... , 39 ]
System.out.println(arr02.size()); // 20
}
}
[ 자료구조 ]
https://fliphtml5.com/hkuy/hgwb
[ .add( index, value ) 원하는 위치에 값 추가 ]
package collection;
import java.util.ArrayList;
import java.util.Collections;
public class ArrayList02 {
public static void main(String[] args) {
ArrayList<Integer> arr01 = new ArrayList<Integer>();
for (int i = 10; i < 16; i++) {
arr01.add(i);
}
System.out.println(arr01); // [10, 11, 12, 13, 14, 15]
arr01.add(0, 100); // 0번지에 100을 추가
// 마지막 번지수에 50을 넣어주세요. add(index, e) 이용
System.out.println(arr01.size()); // 7
arr01.add(arr01.size(), 50);
System.out.println(arr01); // [100, 10, 11, 12, 13, 14, 15, 50]
System.out.println(arr01.size()); // 8
[ .remove ( index ) 원하는 위치의 값 제거 ]
// 삭제 remove(int index)
System.out.println(arr01.remove(0)); // 100 (0번지 값인 100을 지워줌)
System.out.println(arr01); // [10, 11, 12, 13, 14, 15, 50]
System.out.println(arr01.size()); // 7
System.out.println(arr01.remove(3)); // 13을 지워보자 (13의 index = 3)
System.out.println(arr01); // [10, 11, 12, 14, 15, 50]
System.out.println(arr01.size()); // 6
// arr01.add(3, 13); // 13을 다시 넣어보자~~
System.out.println(arr01); [10, 11, 12, 14, 15, 50]
System.out.println(arr01.size()); // 7
[ Generic ]
클래스 선언부에 <E>, <T>, <K, V>가 붙어있는 경우가 있습니다.
이런 인터페이스, 추상 클래스, 클래스를 제네릭이라고 합니다.
자바 1.5부터 추가된 기능입니다.
<E> element, 구성요소(데이터타입)를 적습니다.
<T> Type
<K, V> Key, Value
이 기호를 사용해서 데이터 타입을 선언할 수 있습니다.
정해지지 않은 데이터 타입은 제네릭으로부터 객체가 생성될 때 결정됩니다.
> * 타입을 지정하지 않고 저장하면 추후에 값을 불러올 때 혼동.
처음 생성할 때 타입 지정하고 해당 타입만 넣을 수 있게!!
[ .indexOf ( value ) _값이 있다면 index출력, 없다면 -1출력 ]
ArrayList<String> arr02 = new ArrayList<String>();
arr02.add("홍길동");
arr02.add("김길동");
arr02.add("이길동");
arr02.add("박길동");
System.out.println(arr02); // [홍길동, 김길동, 이길동, 박길동]
// remove (value)
System.out.println(arr02.remove("홍길동")); // true
System.out.println(arr02.remove("표길동")); // false
System.out.println(arr02); // [김길동, 이길동, 박길동]
// indexOf() :
System.out.println(arr02.indexOf("김길동")); // 0 => arr02에 "김길동"이라는 값이 있음 => 해당 값의 index 출력
System.out.println(arr02.indexOf("박길동")); // 2 => arr02에 "박길동"이라는 값이 있음 => 해당 값의 index 출력
System.out.println(arr02.indexOf("표길동")); // -1 => arr02에 "표길동"이라는 값이 없다는 의미
System.out.println(arr02); // [김길동, 이길동, 박길동]
[ collections.sort ( list ) & collections.reverse ( list ) & collections.shuffle ( list ) ]
정렬 _ 오름차순, 내림차순, 랜덤
*주의*
자바의 Collection 은 인터페이스, Collections 는 클래스
Collections.sort(arr02); // 정렬
System.out.println(arr02);
// 0~9 랜덤하게 5개 저장하는 list(arr03)를 만들어주세요
ArrayList<Integer> arr03 = new ArrayList<Integer>();
for (int i = 0; arr03.size() < 5; i++) {
int random = (int) (Math.random() * 10);
arr03.add(random);
}
System.out.println(arr03); // [2, 6, 8, 3, 0]
Collections.sort(arr03); // 오름차순 정렬
System.out.println(arr03); // [0, 2, 3, 6, 8]
Collections.reverse(arr03); // 내림차순 정렬
System.out.println(arr03); // [8, 6, 3, 2, 0]
Collections.shuffle(arr03); // 랜덤 정렬
System.out.println(arr03);
[ contains(value) & set(index, value) & clear( ) ]
값이 있는지 확인 & 원하는 위치 값변경 & 모든 값 지우기
// contains(value) : 요소에 있는지 확인하기
System.out.println(arr02.contains("김나래")); // false
System.out.println("arr02 출력하기");
System.out.println(arr02); // [김길동, 박길동, 이길동]
// set(index, value) : 값 변경
arr02.set(0, "황길동");
System.out.println("set 활용하기 " + arr02); // set 활용하기 [황길동, 박길동, 이길동]
// clear() : 모든 값 지우기
// arr02.clear();
// System.out.println("clear : " + arr02); // clear : []
// System.out.println("clear : " + arr02.size()); // clear : 0
System.out.println(arr02); // [황길동, 박길동, 이길동]
// 기존의 list인 arr02를 불러와서 새로운 list인 arr04 생성
ArrayList<String> arr04 = new ArrayList(arr02);
System.out.println("arr04 : " + arr04); // arr04 : [황길동, 박길동, 이길동]
arr02.set(1, "김나래"); // arr02 값을 재설정하면 arr04도 바뀔지..?
System.out.println("arr02 : " + arr02); // arr02 : [황길동, 김나래, 이길동]
System.out.println("arr04 : " + arr04); // arr04 : [황길동, 박길동, 이길동]
// 복사할 때 value들을 하나하나 가져오기 때문에
// arr04가 생성되고 나면 arr02와의 관계는 끊김!
// arr02와 arr04는 각각 독립적인 list
[ 로또번호추첨 ]
package collection;
import java.util.ArrayList;
import java.util.Collections;
public class ArrayList03 {
public static void main(String[] args) {
ArrayList<Integer> arr01 = new ArrayList<Integer>();
arr01.add(45);
arr01.add(40);
// indexOf((Integer) 45) => (index(int)가 아니라) 값 45가(Integer) 있냐
System.out.println(arr01.indexOf(45)); // 0 (45는 0번지에 있음)
System.out.println(arr01.indexOf((Integer) 45)); // 0
System.out.println(arr01.indexOf(40)); // 1 (40은 1번지에 있음)
System.out.println(arr01.indexOf((Integer) 40)); // 1
System.out.println(arr01.indexOf(10)); // -1 (10이라는 값이 없음)
System.out.println(arr01.indexOf((Integer) 10)); // -1
// contains((Integer) 40)
System.out.println(arr01.contains(45)); // true (45이라는 값이 있음)
System.out.println(arr01.contains(40)); // true (40이라는 값이 있음)
System.out.println(arr01.contains(10)); // false (10이라는 값이 없음)
ArrayList<Integer> lotto = new ArrayList<Integer>();
// 1)
while (lotto.size() < 6) {
int random = (int) (Math.random() * 45 + 1);
if (lotto.contains(random) == false) {
lotto.add(random);
}
}
System.out.println(lotto);
// 2)
lotto.add( 0, (int)(Math.random() * 45) + 1 );
for (int i = 1; i < 6; i++) {
int num = (int) (Math.random() * 45) + 1;
if(lotto.indexOf(num) < 0) { // if(!lotto.contains(num)) 조건도 가능
lotto.add(i, num);
} else {
i--;
}
}
'국비과정 > JAVA' 카테고리의 다른 글
20230619 _[12일차]_02. Set & Map (0) | 2023.06.21 |
---|---|
20230620 _[13일차]_01. 접근제어자 (0) | 2023.06.21 |
20230616 _[11일차]_03. 여러생성자 만들기 연습 & static 변수 (0) | 2023.06.20 |
20230616 _[11일차]_02. 기본생성자 & 명시된생성자 & this (0) | 2023.06.19 |
20230616 _[11일차]_01. 메소드 오버로딩 & 생성자 (0) | 2023.06.19 |