Java - List
이 페이지는 다음에 대한 공부 기록입니다
JAVA(자바), Python(파이썬) 기반의
AI 활용 응용 소프트웨어 개발자 양성 과정
2021.11.10. ~ 2022.05.18.
찾으시는 정보가 있으시다면
주제별reference를 이용하시거나
우측 상단에 있는 검색기능을 이용해주세요
27일차 수업
========복습========
제너릭
<> : 다이아몬드 기호
타입 매개변수
-
<> 안에 들어가는 문자
-
문자는 일반적인 규칙, 한글자 대문자로 선언
-
T, E, K, V, N 등
class Box<T>{---}
// class 클래스명<타입파라미터>{---}
타입 인자
-
class 정의 측 코드가 아니라 new를 선언하는 코드 측
-
인자에는 클래스 명이 들어감
-
제너릭으로 설정한 형태로 그 안에 변수나 객체를 만듬
-
기본자료형은 클래스가 아니기 때문에 wrapper 클래스로 진행
Box<String> box1 = new Box<>();
// 클래스명<인자> 인스턴스명 = new 클래스명<>();
======== 끝 ========
27일차 수업
List
본인 차제가 배열인 클래스
클래스 뒤에 [] 붙여서 배열화 시킨 것
배열은 크기가 고정이 되지만 List는 자동적으로 크기가 늘어남
List<String> a1 = new ArrayList<String>(); // 크기를 선언하는 부분이 없음
a1.add(“11”); // list 값 추가 메소드
a1.size(); // 크기 값 반환 메소드
a1.remove(1); // 해당 인덱스 값 제거
a1.get(0) // 해당 인덱스 값 반환
a1.removeAll(a1);
향상된 for문
장점 : 모든 데이터를 출력, 배열 넘치는 오류가 없음
단점 : 무조건 전체출력
ex)
for(String s : a1){
System.out.print(s);
}
Iterator
컬렉션 프레임 워크에 데이터를 가져오는데 특화된 클래스
Iterator<String> iterator = a1.iterator();
while(iterator.hasNext()){
System.out.print(iterator.next() + “ ”);
}
ListIterator은 hasPrevious 라는 역행으로 값을 가져오는 메소드가 있음
Set
list는 저장 순서가 존재하지만 set은 존재하지 않음, 중복 저장도 하지않는다는 특징이 있음
import java.util.HashSet;
import java.util.Objects;
class Person{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public int hashCode() { // 오버라이딩 : 기발하다! 인스턴스 내 name 과 age의 해쉬값을 리턴하고, 1차로 거르고
return Objects.hash(name,age);
}
public boolean equals(Object obj) { // 오버라이딩 : 또 기발하다!! 2중으로 한번 더 확인한다 비교대상 인스턴스 인자로 받아서 같은지 2차로 한번 더 확인한다!!
Person com = (Person) obj;
if(name.equals(com.name) && (age == com.age)) {
return true;
}else {
return false;
}
}
}
public class Ex05_set_exam {
public static void main(String[] args) {
// Hash : 암호학에서 사용하는 용어, 어떠한 입력값을 받든 "10"자리 글자로 변환해서 저장하는 기법
// 특이한 케이스를 제외하고는 중복값이 존재하지 않습니다
HashSet<Person> hSet = new HashSet<>();
hSet.add(new Person("shin", 20));
hSet.add(new Person("kim", 20));
hSet.add(new Person("shin", 20));
System.out.println(hSet.size()); // output will be 2
}
}