자바 컬렉션으로는 크게 자주 사용하는 예로
3가지가 있다
첫 번째는 ArrayList
순서가 있고 중복이 허용이 된다는 특징을 가지고 있다
그리고 데이터 조회가 간편하다는 장점을 가지고 있다
ArrayList list = new ArrayList(2);
ArrayList는 <제네릭> 매개변수타입을 쓰는 것이 일반적이지만
위에 코드처럼 제네릭 선언을 안하는 경우가 있다
제네릭을 선언을 안하게 된다면 해당 ArrayList는 Object 타입이 된다.
list2.add(new Music("하입보이", "뉴진스"));
list2.add(new Music("Believer", "Imagine Dragons"));
list2.add("끝");
위 처럼 Music 객체 타입도 선언이 가능하고
밑에 처럼 String 타입도 ArrayList에 추가할 수 있다.
ArrayList<Music> list2 = new ArrayList(5); // 5 크기를 지정
--- > 제네릭 매개변수를 Music 객체로 형을 제한했다
매개변수 타입 Music으로 제한을 하게 된다면
list2.add(new Music("하입보이", "뉴진스"));
list2.add(new Music("Believer", "Imagine Dragons"));
list2.add("끝"); 컴파일 오류가 발생하게 된다
String 타입은 접근이 불가능해진다.
ArrayList 접근하는 방법
for (int i=0; i<mList.size(); i++) {
System.out.println( mList.get(i) );
}
for문을 통해서 get()메소드를 i를 통해 인덱스에 직접 접근을 하여
출력을 한다.
System.out.println("------for each-----");
for(Music m : mList) {
System.out.println(m);
// 따로 get 메서드가 필요없다
향상된 for문 : for문 보다 좀 더 가독성이 좋게 출력이 가능하다.
.clear(); 메소드 mList에 추가한 데이터를 모두 지우는데 사용이 된다
mList.remove(1); ArrayList는 인덱스를 통해서 접근을 한다.
인덱스에 해당하는 데이터를 삭제해준 후 true, false를 반환해준다.
.isEmpty();
List 안에 데이터가 있는 지 없는 지 확인을 해준다
해당 list안에 데이터가 없으면 true를 데이터가 존재한다면 false를 리턴해준다.
Set 특징 : 순서가 없고 중복도 허용되지 않는다.
Set 중복 체크 : equals(), hashCode() 통해 중복데이터가 체크된다.
HashSet<Student> hSet = new HashSet<>();
HashSet을 <Student>타입으로 타입매개변수를 초기화를 했다.
hSet.add(new Student("기다운", 70));
hSet.add(new Student("종군님", 40));
hSet.add(new Student("기다운", 100));
Set의 특징은 중복을 허용하지않는다와 순서가 없다.
[기다운 : 70, 종군님 : 40, 기다운 : 100]
위처럼 작성을 하게 된다면 중복이 없어서 모두가 출력이 된다
하지만
1.hSet.add(new Student("기다운", 70));
2.hSet.add(new Student("종군님", 40));
3.hSet.add(new Student("기다운", 70));
위 코드처럼
3번 점수를 100점에서 70점으로 초기화를 했다
그렇게 된 이후에 호출을 해보면
[기다운 : 70, 종군님 : 40]으로 출력이 되게된다.
* 여기서 다시 한 번 Set 특징을 살펴보면 중복을 허용하지 않는다가
생각이 날 것이다
Set 호출하기
Set은 ArrayList와 다르게 get을 통해서
호출하지 않는다. 왜냐면 Set은 순서가 없기 때문이다
Iterator<Student>it = hSet.iterator();
hasNext() - 해당 컬렉션즈에 데이터가 있는지 없는지 확인 true, false를 통해서 가능하다
next(); 데이터를 조회하는 용도로 사용이 된다
System.out.println("-Iterator--");
while(it.hasNext()) {
System.out.println(it.next());
}
위와 같이 반복문을 통해서 접근이 가능하다
다음은 HashMap<String, Snack>hMap = new HashMap<>();
hMap의 키는 String 타입이고 Value 값은 Snack 객체를 주었다.
hMap.put("바나나킥", new Snack("바나나맛", 1024));
HashMap은 get을 통해서 value 값에 접근을 할 수 있다
ArrayList와는 다르게 "인덱스"를 통해서 접근을 하는 게 아닌
get() 에는 key값을 통해서 value에 접근을 할수가 있다.
키 목록 조회 :
Set<String> keyList = hMap.keySet();
keySet은 해당 Map에서 가지고 있는 키들을 모두 모아준다
for(String key : keyList){
System.out.println(key + " : " + hMap.get(key));
}
'Java' 카테고리의 다른 글
Servlet Filter (0) | 2024.10.16 |
---|---|
spring interceptor (0) | 2024.10.15 |
자바 헷갈리는 내용 정리 (1) | 2024.07.15 |
내가 잘 모르는 부분들 내용정리 JAVA (0) | 2024.07.15 |
자바 예외처리 ~ IO 입출력 내용 정리 (0) | 2024.07.14 |