• 티스토리 홈
  • 프로필사진
    chantleman
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
chantleman
  • 프로필사진
    chantleman
    • 분류 전체보기 (329)
      • 프로젝트 (1)
      • react (2)
      • 코딩테스트 (133)
        • lv0 (101)
        • lv1 (10)
        • lv2 (7)
        • lv3 (15)
      • 오류 (14)
      • 리눅스 (5)
      • 자바 (75)
        • spring (7)
      • js (35)
      • 오라클 (39)
        • PLSQL (3)
      • cs (5)
      • 도커 aws (3)
      • 단축키 (3)
      • 나만봐 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • collection
        2024년 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;
        
            }

         

         

         

         

        2024.07.26 - [자바] - hash

         

        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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바