- collection2024년 07월 26일
- chantleman
- 작성자
- 2024.07.26.:27
1. List
- 특징: 순서가 있는 컬렉션
- 중복 허용: 중복 가능
- 예제: [1, 2, 3, 2, 4]
- 주요 연산: 인덱스를 사용하여 요소에 접근
(예를 들어, list[0]은 첫 번째 요소를 의미) - 사용 예: 순서가 중요한 데이터를 저장할 때 사용
- add()로 데이터 넣고, get()으로 꺼냄
2. Set
- 특징: 순서가 없는 컬렉션(키로만 이루어짐)
- 중복 허용: 중복 x. 즉, 각 요소는 유일해야 함
- 예제: {1, 2, 3, 4}
- 주요 연산: 주로 집합 연산(교집합, 합집합, 차집합 등)을 수행하는 데 유용
- 사용 예: 중복된 값을 제거하거나, 특정 값의 존재 여부를 빠르게 확인할 때 사용
- add()로 데이터 넣고, iterator의 hasNext()와 next() 메소드로 데이터 꺼냄
3. Map (또는 Dictionary)
- 특징: 키-값 쌍으로 이루어진 컬렉션으로 순서가 없음
- 중복 허용: 같은 키를 사용할 수 없지만, 같은 값은 여러 번 들어갈 수 있음
- 예제: {'a': 1, 'b': 2, 'c': 3}
- 주요 연산: 키를 사용하여 값에 빠르게 접근할 수 있음
(예를 들어, map['a']는 값 1을 의미) - 사용 예: 데이터를 키를 통해 빠르게 검색하거나 연관된 정보를 저장할 때 사용
- put()으로 데이터 넣고, get()으로 꺼냄
주로 배열보다 컬렉션을 사용하는데
그 이유는
배열은 정적이라 처음에 선언할 때 크기를 미리 지정해줘야하지만,
ArrayList는 크기를 동적으로 크기 조절이 가능합니다. (자동확장)
속도 측면에서는 배열이 더 빠릅니다. (ArrayList는 자동확장기능 때문에 속도가 느림)
하지만 처음에 ArrayList 크기를 크게 해주면 자동확장을 안해도 되기때문에 결국 배열과 속도가 같습니다.
List
사이즈 옵션을 넣어 속도 이슈 해결
public CustomArrayList() { strList = new String[10]; } public CustomArrayList(int size) { strList = new String[size]; this.size= size; }
자동 확장(자동 확장하면 배열 크기 지정 안해도됨)
public void add(String str) { if(size == strList.length) { String[] tempList = new String[size+10]; System.arraycopy(strList,0,tempList,0,size); strList = tempList; } strList[size++] = str; }
arraycopy(복사할 대상(원본), 원본에서 읽어올 위치, 붙여넣을 대상, 복사본에서 쓸 시작 위치, 원본에서 복사본까지 얼만큼 읽어올지)
사이즈가 10인데 9까지밖에 없으니까 자동확장해야됨
public String remove(int num) { String result = get(num); String[] tempList = new String[strList.length]; System.arraycopy(strList, 0, tempList, 0, num); System.arraycopy(strList, num+1, tempList, num, strList.length-num-1); strList = tempList; size--; return result; }
1 2 3 4 5에서 3을 삭제시켰을 때 1 2 4 5가 되는 것처럼
뒤에 있는 기존값들을 한 칸씩 땡겨오는 작업
<회원 정보 crud 예제>
public class MemberList { public static void main(String[] args) { MemberList obj = new MemberList(); obj.process(); } List<Member> list = new ArrayList(); public void process() { while(true) { System.out.println("1. 회원가입"); System.out.println("2. 회원조회"); System.out.println("3. 회원변경"); System.out.println("4. 회원탈퇴"); int sel = ScanUtil.nextInt("선택: "); if(sel ==1) addMember(); if(sel==2) printMember(); if(sel==3) changeMember(); if(sel==4) deleteMember(); } } public void addMember() { Member member = new Member(); member.setName(ScanUtil.nextLine("이름: ")); member.setAge(ScanUtil.nextInt("나이: ")); member.setAddr(ScanUtil.nextLine("주소: ")); list.add(member); } public void printMember() { for(Member mem : list) System.out.println(mem); } private void changeMember() { printMember(); int num = ScanUtil.nextInt("수정할 회원 번호(0부터): "); Member mem = list.get(num); mem.setName(ScanUtil.nextLine("이름: ")); mem.setAge(ScanUtil.nextInt("나이: ")); mem.setAddr(ScanUtil.nextLine("주소: ")); } private void deleteMember() { printMember(); int num = ScanUtil.nextInt("삭제할 회원 번호(0부터): "); Member mem = list.remove(num); System.out.println(mem.getName()+"님이 탈퇴하셨습니다."); } } @Data class Member{ private String name; private int age; private String addr; }
hash
HashSet- key로 이루어짐- key값은 중복 허용하지 않고 순서가 보장되지 않음- set 타입의 대표 컬렉션 주요 메소드.add(key) : 값 추가.remove(key) : 값 삭제.contains(key) : 포함 여부.iterato
chantleman.tistory.com
728x90'자바' 카테고리의 다른 글
mvc (0) 2024.07.30 eclispe 상위 버전 (0) 2024.07.29 hash (0) 2024.07.26 date, calendar (0) 2024.07.25 try-catch, throw Exception (2) 2024.07.24 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)