Devlog
article thumbnail

위 글은 해당 카테고리의 수업 강의 자료를 정리한 것입니다.

 

 

 

1. 제네릭(Generic)

  • 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법 (클래스 내부에서 사용할 데이터 타입을 나중에 인스턴스를 생성할 때 확정하여 사용)
  • 객체 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어듦

 

2. 컬렉션 프레임워크 소개

  • 프레임워크(Framework): 표준화, 정형화된 체계적인 프로그래밍 방식
  • 컬렉션(Collection): 다수의 데이터, 즉 데이터 그룹
  • 컬렉션 프레임워크(Collection Framework)
    • 다수의 데이터를 저장하는 클래스들을 표준화한 설계
    • 다수의 데이터를 쉽게 처리할 수 있는 방법을 제공하는 클래스들로 구성
    • JDK 1.2부터 제공
  • 구성

 

 

3. List

  • 순서를 유지, 중복 저장 가능
  • 배열과 비교

  • 종류
    • ArrayList
      • 인덱스로 관리됨
      • 배열과 유사한 방법으로 관리 가능
    • LinkedList
      • 링크(Link)로 연결된 노드(Node)의 집합
      • java.until.LinkedList 클래스에 정의됨
      • index를 통한 참조 접근은 불가함 ➡️ head로부터 링크를 따라 가면서 접근
      • 각 노드(Node)는 자신이 나타내는 데이터와 다음 노드(Node)로의 링크(Link)를 가지고 있음
      • 노드의 기본 구성

새로운 Node 추가
기존 Node 삭제

 

ArrayList와 LinkedList 비교

 

 

참고 자료

https://coding-factory.tistory.com/551

 

[Java] 자바 ArrayList 사용법 & 예제 총정리

ArrayList란? ArrayList는 List 인터페이스를 상속받은 클래스로 크기가 가변적으로 변하는 선형리스트입니다. 일반적인 배열과 같은 순차리스트이며 인덱스로 내부의 객체를 관리한다는점등이 유

coding-factory.tistory.com

https://coding-factory.tistory.com/552

 

[Java] 자바 LinkedList 사용법 & 예제 총정리

LinkedList란? 연결 리스트(LinkedList)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조입니다. 데이터를 담고 있는 노드들이 연결되어 있고, 노드의 포인터가 이전 노

coding-factory.tistory.com

 

예제

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<Integer> list = new ArrayList<Integer>();
		
		list.add(3); //값 추가
		System.out.println(list);
		
		list.add(null); //null값도 add가능
		System.out.println(list);
		
		list.add(1,10); //index 1에 10 삽입
		System.out.println(list);
		
		// 지우기
		list.remove(2);
		System.out.println(list);
		
		list.clear();
		System.out.println(list);
		
		
		System.out.println(list.size());
		
		System.out.println("");
		
		System.out.println(list.get(1));
//		범위 넘어가면 예외 발생
		
		System.out.println("");
		
		for(Integer i: list) {
			System.out.println(i);
		}
		
		Iterator iter = list.iterator(); // Iterator 선언
		while(iter.hasNext()) { // 다음 값이 있는지 체크
			System.out.println(iter.next()); // 값 출력
		}
		
		for(int i=0; i<list.size(); i++) {
			System.out.println(list.get(i));
		}
		
		
		System.out.println(list.contains(1)); // list에 1이 있는지 검색, true/false
		System.out.println(list.contains(10));
		
		System.out.println(list.indexOf(1)); // 1이 있는 index 반환, 없으면 -1

	}

}
import java.util.LinkedList;

public class LinkedListTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		LinkedList<Integer> list = new LinkedList<Integer>();
		
		// 데이터를 앞뒤 둘 다 삽입 가능
		
		System.out.println(list);
		
		list.addFirst(1);
		System.out.println(list);
		
		list.add(2);
		System.out.println(list);
		
		list.addFirst(3);
		System.out.println(list);
		
		list.add(1,10);
		System.out.println(list);
		
		
		
		list.addLast(100);
		System.out.println(list);
		
		list.removeLast();
		System.out.println(list);
		
		list.removeFirst();
		System.out.println(list);
		
		list.remove(1);
		System.out.println(list);
		
		
		System.out.println(list.size());
		
		// 향상된 for문
		for(Integer i: list) {
			System.out.println(i);
		}
		
		System.out.println(list.contains(100));
		System.out.println(list.indexOf(100));

	}

}

 

 

 

 

4. Set (HashSet)

  • 순서 없이 저장됨
  • 중복 값은 저장되지 않음 ➡️ 중복의 재정의가 필요
  • 수학의 집합에 비유

순서가 없어서 일반적인 for문 적용은 불가능함

Set과 List 비교

중복 정의가 중요하며 이는 클래스의 hashCode()와 equals() 메소드 재정의가 필요함을 의미

 

 

import java.util.HashSet;
import java.util.Iterator;

public class HashSetTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		HashSet<Integer> set = new HashSet<Integer>(); //HashSet 생성
		System.out.println(set);
		
		set.add(1);
		set.add(2);
		set.add(10);
		System.out.println(set);
		
		set.remove(1); // 값 1 제거
		System.out.println(set);
		
		// set.clear(); // 모든 값 제거
		
		
		System.out.println(set.size()); // 크기 출력
		
		// 순서가 없으므로 for문으로 출력 불가능
		// iterator를 이용하여 값을 출력해야 함
		Iterator iter = set.iterator(); // Iterator 사용
		
		while(iter.hasNext()) { // 값이 있으면 true, 없으면 false 
			System.out.println(iter.next());
			
		}
	}

}

 

참고 자료

https://coding-factory.tistory.com/554

 

[Java] 자바 HashSet 사용법 & 예제 총정리

HashSet이란? HashSet은 Set 인터페이스의 구현 클래스입니다. 그렇기에 Set의 성질을 그대로 상속받습니다. Set은 객체를 중복해서 저장할 수 없고 하나의 null 값만 저장할 수 있습니다. 또한 저장 순

coding-factory.tistory.com

 

 

 

예제(HashSet을 이용하여 미니로또(중복제거)만들기)

import java.util.HashSet;
import java.util.Iterator;

public class MiniLotto {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		HashSet<Integer> set = new HashSet<Integer>();
		
		for(int i=0; i<6; i++) {
			int number = (int)(Math.random()*45)+1;
			set.add(number);
		}
		
		Iterator iter = set.iterator(); // Iterator 사용
		
		while(iter.hasNext()) { // 값이 있으면 true, 없으면 false 
			System.out.print(iter.next()+" ");
			
		}
	}

}

 

 

 

 

5. Map (HashMap)

  • 키(key)-값(value)의 쌍으로 저장
  • 키는 중복될 수 없으나 값은 중복될 수 있음
    • 키 값들은 keySet()으로 관리, 중복 허용 안됨, 순서 없음

 

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class HashMapTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		HashMap<String,String> map = new HashMap<>(); // new에서 타입 파라미터 생략가능
		System.out.println(map);
		
		map.put("apple", "사과");
		map.put("banana", "바나나");
		map.put("mango", "망고");
		System.out.println(map);
		
		map.remove("banana"); // 키 값 banana 제거
		System.out.println(map);
		
		map.put("kiwi", "키");
		// map.clear(); // 모든 값 제거
		
		
		System.out.println("");
		
		
		// entrySet() 활용하여 출력 (entrydata로 받아온 결과)
		for (Entry<String, String> entry : map.entrySet()) {
		    System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
		}
		
		
		System.out.println("");
		
		
		//entrySet().iterator()
		Iterator<Entry<String, String>> entries = map.entrySet().iterator();
		while(entries.hasNext()){
		    Map.Entry<String, String> entry = entries.next();
		    System.out.println("[Key]:" + entry.getKey() + " [Value]:" +  entry.getValue());
		}
		
		
		System.out.println("");
		
		
		//keySet().iterator()
		Iterator<String> keys = map.keySet().iterator();
		while(keys.hasNext()){
		    String key = keys.next();
		    System.out.println("[Key]:" + key + " [Value]:" +  map.get(key));
		}
	}

}

참고 자료

https://coding-factory.tistory.com/556

 

[Java] 자바 HashMap 사용법 & 예제 총정리

HashMap 이란? HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다. Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있습니다. Map은 키와 값으로 구성된 Entry객체를 저장하는

coding-factory.tistory.com

 

profile

Devlog

@덩이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그