YJ의 새벽

JAVA 컬렉션 복습 본문

SelfStudy/JAVA

JAVA 컬렉션 복습

YJDawn 2023. 4. 6. 20:32

 

 

 

  • 컬렉션 

-- 자바에서 제공하는 자료구조를 담당하는 프레임워크. 

-- 추가, 삭제, 정렬 등 기능처리가 간단하게 해결되어 자료구조적 알고리즘을 구현할 필요 없음.

 

-- 크기의 제약이 없다.

-- 여러 타입의 데이터가 저장 가능하다.

 

 

 

 

  • List    ( ArrayList, Vector , LinkedList )

-- 자료들을 순차적으로 나열한 자료구조,

-- 인덱스로 관리되며, 

-- 중복  O 

 

  • Set  ( HashSet , LinkedHashSet, TreeSet )

-- 저장 순서가 유지되지 않고, 

-- 중복 X  ( null 도 중복을 허용하지않는다 )

 

 

  • Map   ( HashMap , HashTable )

-- 키와 값  으로 구성되어 있으며,

-- 키는 중복저장을 하용하지않고 ,  값은 중복 저장 가능.

-- 키가 중복되는 경우 , 기존에 있는 키에 값이 덮어씌움 . 

-- add()  x   ,  put( k ,v )   o 

 

 

 

 

 

 

-------- List 연습

 

public class ListService {

	public void ex1() {
		
//		ArrayList list = new ArrayList();  // 기본생성자 -> 10칸짜리 생성
		ArrayList list = new ArrayList(3);  // 3칸짜리 생성

		list.add( new Object() );
		list.add( new String() );
		list.add( new Student() );
		list.add( new String("초과") ); // list 크기 초과
		list.add( 1, new Student("홍길동",15,"강남구",'남',60)); // 1 자리에 객체 추가
		
		// set (int index, E e) : index위치를 E객체로 수정   ( 수정 )
		Object str = list.set(4, new String("수정된 문자열"));
		System.out.println(str);  // 원래 4번째위치, "초과"출력
		
		// remove (int index) : index위치 객체를 꺼내서 반환  ( 삭제 )
		Object student = list.remove(2);
		
		System.out.println(student);   // 번위치 String() 반환
		
		
		// size()  :  List에 저장된 요소의 개수를 반환
		// get(int index) : index에 위치한 객체를 얻어옴. ( 조회 )
		for(int i = 0; i < list.size(); i++) {
			
			if ( list.get(i) instanceof Student )
			System.out.println( ((Student)list.get(i)).getName()  );
		}
	}
}

 

 

 

 

 

 

---- Set 연습

-- Iterator 반복자    =   Iterator< 타입 > iterator = HashSet.iterator();

-- 향상된 for 문  =    for ( String value : HashSet )  {   value } ;

 

-- Set에 저장된 객체가 중복임을 판단하는 방법

  -- Object.equls()  -- > VO 오버라이딩. ( 저장된 클래스 )

  -- Hash 라는 단어가 붙은 컬렉션이 중복을 판단하는방법 

        --> Object.hashCode() 오버라이딩.

// hashCode() : 객체에 저장된 필드를 이용해서 만들어진 정수를 반환
// HashSet --> equals(), hashCode() 둘다 오버라이딩 되어있어야함

--- TreeSet  :  오름차순으로 정렬되고 , 중복 제거되는 Set .    ( ex . 로또  )

 

public class SetService {
	// 순서 유지 X ,  중복 X  ( null도 1개만 )
	public void ex1() {
		Set<String> set = new HashSet<String>();
		set.add("네이버");
		set.add("네이버");
		set.add("카카오");
		set.add("라인");
		set.add("배민");
		set.add("배민");
		set.add("당근마켓");
		set.add("토스");
		set.add("야놀자");
		set.add("야놀자");
		set.add(null);
		set.add(null);
		
		set.remove("라인");
		System.out.println(set.toString());
		
		// Set 요소 하나씩 얻어오기 

		Iterator<String> it = set.iterator();
		
		while(it.hasNext()) {
			String temp = it.next(); // 다음값을 얻어옴
			System.out.println(temp);
		}
		System.out.println("===============");
		// 2. 향상된 for 문 사용가능
		for (String temp : set) {
			System.out.println(temp);
		}
	}
	
	public void ex2() {
	
		Set<Student> set = new HashSet<>();
		set.add( new Student("홍길동",15,"서울 중구",'M',50) );
		set.add( new Student("김길순",17,"서울 종로구",'F',100) );
		set.add( new Student("홍길동",15,"서울 중구",'M',50) );

		for(Student s : set) {
			System.out.println(s);
		}
	}
	
	public void ex3() {
		
		// TreeSet : 오름차순 정렬 , 중복 제거
		Set<Integer> lotto = new TreeSet<>();
		
		while(lotto.size() < 6 ) {
			int ran = (int) (Math.random() * 45 + 1); // 1~45 난수
			lotto.add(ran);
		}
		System.out.println(lotto);
	}
}

 

 

 

 

--- Map 연습

--  Key 와 Value  한 쌍이 데이터가 되어 이를 모아둔 객체

   -- key : Map 에 저장된 데이터를 구분 용도

             : Set의 특징을 지님.  ( 순서 X , 중복 X ) 

             : equals() , hashCode()  오버라이딩 O

   -- value  :  Map 실제 저장된 값을 의미

                 : List 의 특징을 지님  ( 중복 O )

-- Map.put ( key, value ) ;    Map에 추가

-- keySet()  :  Map 에서 Key 부분만을 추출하여 Set 형태로 반환

 

-- Map 은 언제 사용하면 좋을까 ??

  -- 재사용이 적은 VO 를 대체하는 경우.

  -- 한번에 다량의 데이터를 전달하는 경우.  ( 데이터의 명확한 구분을 위해서 사용 )

 

public class MapService {

	public void ex1() {
		
		Map<Integer, String> map = new HashMap<>();
		
		map.put(1, "홍길동");
		map.put(2, "고길동");
		map.put(3, "김길동");
		map.put(4, "박길동");
		map.put(5, "조길동");
		map.put(6, "홍길동");
		map.put(1, "덮어씌운홍길동"); // 키 중복 = 덮어쓰기
		System.out.println(map.toString());
	}
	
	public void ex2() {
		
		Student std = new Student();
		Map<String, Object> stdMap = new HashMap<>();
		
		// 값 추가
		std.setName("홍길동");  // VO 사용
		std.setAge(15);
		std.setAddress("서울시 중구");
		std.setGender('남');
		std.setScore(100);
		
		stdMap.put("name", "홍길동"); // Map 사용
		stdMap.put("age", 15);
		stdMap.put("address", "서울시 중구");
		stdMap.put("gender", '남');
		stdMap.put("score", 100);
		
		System.out.println("std = "+std);
		System.out.println("stdMap = " +stdMap);
		
		for ( String key : stdMap.keySet()) {
			System.out.println( stdMap.get(key));
		}
	}
}

 

 

 

 

 

 

'SelfStudy > JAVA' 카테고리의 다른 글

JAVA ( 스트림의 그룹화,분할 )  (0) 2023.02.12
JAVA ( 스트림 )  (0) 2023.02.10
JAVA ( 메서드참조 )  (0) 2023.02.09
JAVA ( 함수형인터페이스 )  (0) 2023.02.09
JAVA ( 람다식 )  (0) 2023.02.09
Comments