[JAVA] array, list, set, map

1108mango·6일 전
0

JAVA

목록 보기
2/3

List

리스트는 배열의 가장 큰 차이점은 배열은 크기를 10개로 정했다면 10개 이상의 값을 담을 수 없지만, 리스트는 크기가 정해져 있지 않아 원하는 만큼의 값을 담을 수 있다.

ArrayList

List의 자료형 중 가장 간단한 형태의 자료형

ArrayList 객체명 = new ArrayList();

ArrayList<Integer> arrList = new ArrayList<>();
ArrayList<Integer> arrList2 = new ArrayList<>(5);

1. Array -> ArrayList 
- int 가능
ArrayList<Integer> al = new ArrayList<>();
int [] arr = {0};

for(i = 0; i < arr.length(), i++){
al.add(arr[i]); 
}

- Integer, String 가능
String [] arr = {"a", "b", "c"};
List<String> al = new ArrayList<>(Arrays.asList(arr));
-> String, Integer은 Reference라서 가능, int 는 primitive라서 불가능 
--------------------------------------------------------------------------------------
2. add
al.add(3);
al.add(3, "Lee");
--------------------------------------------------------------------------------------
3. ArrayList 의 길이
al.size() 
--------------------------------------------------------------------------------------
. Iterator
Iterator it = al.iterator();
while(it.hasNext()){
어쩌구저쩌구
}
  • add( ): 객체(데이터) 추가
  • get(int idx)​: idx 위치에 있는 객체를 리턴
  • size( )​: 요소의 갯수를 반환하는 메서드 반복문을 돌릴 때 사용함
  • contains( ): 리스트 안에 해당 항목이 있는지를 판별하여 그 결과를 boolean으로 리턴
  • clear(): 객체의 모든 요소 제거
  • remove()
  • remove(객체)​: 해당되는 항목을 삭제하고 삭제한 결과(true, false)를 리턴
  • remove(인덱스): 해당 인덱스의 항목을 삭제하고 삭제된 항목을 리턴
arrList.remove(3);
arrList.remove(Integer.valueOf());

[출처][Java] 14일차 - Generic, List, Set, Map|작성자 윤슬


Set

Set은 List와 다르게 객체(데이터)를 중복해서 저장할 수 없다. 또한 저장된 데이터를 인덱스로 관리하지 않기 때문에 저장 순서가 보장되지 않는다.

HashSet

Set컬렉션을 구현하는 대표적인 클래스

Set 객체명 = new HashSet();

  • add(): 객체(데이터) 추가
  • iterator(): 검색을 위한 반복자 생성
  • size(): 저장된 객체의 수 리턴
  • remove(): 해당 객체 삭제
  • clear(): 저장된 모든 객체 삭제

Set에 들어 있는 값 가져오는 방법 2가지

  • iterator 이용
  • collections 이용

[출처][Java] 14일차 - Generic, List, Set, Map|작성자 윤슬


Map

Map 인터페이스는 Collection 인터페이스와는 다른 저장 방식을 가진다. Map 인터페이스를 구현한 Map 컬렉션 클래스들은 키와 값을 하나의 쌍으로 저장하는 방식(Key - Value)방식을 사용한다.

Map은 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 Key를 통해 Value를 얻는다.

Value는 중복을 허용 하지만 Key는 중복을 허용하지 않는다.

만약 Key가 중복되면, 나중에 들어간 Value로 값이 수정된다.

HashMap

자바의 Map중 가장 간단한 형태의 맵

Map<Key, Value> 객체명 = new HashMap<Key, Value>();

  • put(Key, Value): 객체(데이터) 추가
  • get(Key): Value 값 가져오기
  • size(): 저장된 객체의 수 리턴
  • replace(Key,Value): 내용 변경하기

[출처][Java] 14일차 - Generic, List, Set, Map|작성자 윤슬


예제코드

import java.util.*;
public class Main {
	public static void main(String[] args) {
		System.out.println("-------- array --------");
		// 자료 구조 -> 배열
		int[] arr = new int[3]; // 배열을 만들때 크기가 3으로 고정된다(정적배열)
		arr[0] = 7;
		arr[1] = 1;
		arr[2] = 3;
		for(int i : arr) {
			System.out.println(i);
		}
		// arr[3] = 9; // ArrayIndexOutOfBoundsException 발생
		
		// 배열 사용 X -> 배열대신 Collections(기본API) 사용 -> 3가지의 자료구조(list/set/map)
		
		System.out.println("-------- list --------");
		// 1) list(동적배열)
		ArrayList<Integer> list = new ArrayList<Integer>(3);
		// list.set(0, 7);
		// list.set(1, 1);
		// list.set(2, 3);
		// list.set(3, 9); // 4개째 예외발생? -> IndexOutOfBoundsException 발생
		list.add(7);
		list.add(1);
		list.add(3);
		list.add(9); // 자동으로 list의 크기가 변경된다
		System.out.println(list.get(3)); // 9
		
		for(int i : list) {
			System.out.println(i);
		}
		
		System.out.println("-------- set --------");
		HashSet<Integer> set = new HashSet<Integer>();
		set.add(3);
		set.add(7);
		set.add(3); // 중복된 값은 입력되지 않는다
		// System.out.println(set.get(1)); // error -> index가 없다
		System.out.println(set);
		
		System.out.println("-------- map --------");
		HashMap<String, Integer> map = new HashMap<String, Integer>();
		map.put("최도희",3);
		map.put("최설",7);
		map.put("최도희",10); // 동일한 키를 사용하면 덮어쓰기
		System.out.println(map.get("최도희"));
		System.out.println(map.get("최설"));
		
		System.out.println("-------- 응용 list<map> --------");
		ArrayList<HashMap<String, Object>> studentList = new ArrayList<HashMap<String, Object>>();
		
		HashMap<String, Object> s1 = new HashMap<String, Object>();
		s1.put("이름", "최도희");
		s1.put("나이", 21);
		studentList.add(s1);
		
		HashMap<String, Object> s2 = new HashMap<String, Object>();
		s2.put("이름", "최설");
		s2.put("나이", 22);
		studentList.add(s2);
		
		for(HashMap<String, Object> m : studentList) {
			System.out.print((String)m.get("이름"));
			System.out.print((Integer)m.get("나이"));
			System.out.println("");
		}
	}
}
  • 결과값

-------- array --------
7
1
3
-------- list --------
9
7
1
3
9
-------- set --------
[3, 7]
-------- map --------
10
7
-------- 응용 list --------
최도희21
최설22

profile
나는 나대로♪

0개의 댓글