• 티스토리 홈
  • 프로필사진
    tjdudtn
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
tjdudtn
  • 프로필사진
    tjdudtn
    • 분류 전체보기 (299)
      • JAVA (155)
        • JAVA 수업 메모 (0)
        • JAVA 수업 파일 (0)
        • JAVA 기초문법 (18)
        • JAVA 객체지향 핵심 (25)
        • JAVA 유용한 클래스 (33)
        • JAVA Swing (18)
      • Data Structure( 자료구조 ) (17)
        • 컬렉션 프레임워크 (4)
        • JDBC (8)
      • 기초 개념 및 환경 설정 (17)
        • HTTP 기초 지식 (사전기반지식) (13)
        • 웹 서버와 웹 애플리케이션 서버(WAS)란? (1)
        • WAS와 웹 컨테이너의 역할 (1)
        • 아파치 톰캣 설치하기 (1)
        • 아파치 톰캣 시작과 폴더 구조 확인 (1)
      • 서블릿 기본 개념과 활용 (8)
        • 서블릿이란? (1)
        • 서블릿 Life Cycle 이란? (1)
        • 서블릿 작성, 배포, web.xml 설정의 이해 (1)
        • Get, Post 요청 방식의 이해 (1)
        • 서블릿과 서블릿 컨텍스트란? (1)
        • 서블릿과 데이터베이스 연동 (1)
        • 잠깐! server.xml과 context.xml.. (1)
        • 서블릿 필터와 리스너란 뭘까? (1)
      • JSP 기본 문법과 구조 (9)
        • JSP(Java Server Pages) 란? (1)
        • JSP 라이프사이클 (1)
        • JSP 기초문법 (1)
        • JSP 주석과 지시자 (1)
        • JSP 기본 태그 ( 스크립트릿, 선언, 표현식 .. (1)
        • JSP 지시자 ( Directive ) 간단 정리 (1)
        • JSP 내장 객체란 뭘까? (1)
        • 폼 처리와 요청 방식 (1)
        • 쿠키와 세션 관리 (1)
      • 서블릿과 JSP의 연동 (7)
        • 서블릿과 JSP의 개념과 차이점 (1)
        • 간단한 게시판 만들어 보기 (1)
        • JSP와 MVC 패턴 Todo 프로젝트 (1)
        • 커스텀 태그 ( JSTL ) 라이브러리 사용, (.. (1)
        • JSTL을 활용한 게시판 기능 만들기 (1)
        • JSP 파일 업로드 (1)
        • JSP 프로그래밍 활용 (1)
      • JavaScript (24)
        • JavaScript 게시판 만들기 (9)
      • Spring Boot (34)
        • Bank App 만들기 (deployment) (31)
      • Flutter (8)
      • MySQL (20)
      • 기술 면접 준비 자료 (0)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • List 인터페이스
        2024년 09월 15일
        • tjdudtn
        • 작성자
        • 2024.09.15.:20

        자바에서 객체를 순서대로 저장하고 관리할 수 있도록 설계된 인터페이스입니다.

        자바의 java.util 패키지에 속하며, 배열이나 연결 리스트 등의 순차적 자료 구조의 구현체를 위한 메서드를 정의합니다.

        List 인터페이스의 주요 특징

        1. 순서 유지: List 인터페이스를 구현하는 자료 구조는 원소들이 삽입된 순서를 유지합니다. 이는 원소들이 리스트 내에서 특정 위치(index)를 가지며, 이 인덱스를 통해 접근할 수 있다는 것을 의미합니다.
        2. 중복 허용: **List**는 같은 값을 가진 원소의 중복 저장을 허용합니다. 예를 들어, 같은 값을 여러 번 리스트에 추가할 수 있으며, 이는 리스트의 크기를 증가시키고 각각의 원소는 별도의 인덱스를 갖게 됩니다.
        3. 가변 크기: **List**의 구현체들은 동적으로 크기가 조절됩니다. 즉, 원소를 추가하거나 제거함에 따라 리스트의 크기가 자동으로 조정됩니다.

        주요 메서드

        • add(E element): 리스트의 끝에 원소를 추가합니다.
        • get(int index): 지정된 위치의 원소를 반환합니다.
        • remove(int index): 지정된 위치의 원소를 제거하고 그 원소를 반환합니다.
        • indexOf(Object o): 지정된 객체가 처음으로 나타나는 위치의 인덱스를 반환합니다. 객체가 리스트에 포함되어 있지 않은 경우 -1을 반환합니다.
        • size(): 리스트에 있는 원소의 수를 반환합니다.

        List 인터페이스 구현체

        Collection
           |
           └── List
                ├── ArrayList
                ├── LinkedList
                └── Vector
                ├ ..... 
                
        
        • Collection: 모든 컬렉션 클래스의 최상위 인터페이스입니다.
        • List: Collection 인터페이스를 확장하는 순서가 있는 컬렉션을 위한 인터페이스입니다. 리스트는 중복을 허용하며, 각 요소가 삽입된 순서에 따라 인덱스로 접근할 수 있습니다.
        • ArrayList: 내부적으로 배열을 사용하여 요소를 관리하는 List 구현체입니다. 요소의 무작위 접근이 빠르다는 장점이 있습니다.
        • LinkedList: 내부적으로 연결 리스트를 사용하여 요소를 관리하는 List 구현체입니다. 요소의 삽입과 삭제가 빠르다는 장점이 있습니다.
        • Vector: **ArrayList**와 유사하지만, 모든 메서드가 동기화되어 있어 멀티 스레드 환경에서 안전하게 사용할 수 있습니다.
        package structure.ch05;
        
        import java.util.ArrayList;
        import java.util.Arrays;
        import java.util.Iterator;
        import java.util.List;
        
        import basic.ch22.Student;
        
        public class MyArrayListTest {
        
        	// 메인 쓰레드
        	public static void main(String[] args) {
        
        		List mList; // 리스트 인터페이스 계열
        
        		// ArrayList 클래스의 인스턴스화 처리
        		ArrayList list = new ArrayList();
        		// 제네릭은 추후 더 설명
        		// 제네릭은 타입의 명시화이다.
        		ArrayList<Integer> nums = new ArrayList<Integer>();
        		// 변수에 선언과 동시에 초기화 ---> 값이 들어가 있는 상태인가?
        		// 값을 동시에 추가 하고 싶다면
        		ArrayList<Integer> num2 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        		ArrayList<String> vocabulary = new ArrayList<String>();
        		ArrayList<Student> members = new ArrayList<>();
        
        		// 클래스의 정의된 기능을 알아 봐야 한다.
        		// 값 추가 방법
        		list.add(3);
        		list.add(null);
        		list.add(1, 10); // indx 1위치에 요소 10을 삽입, 기존 요소 있었다면 뒤로 자동 이동
        		System.out.println("값 추가 확인 : " + list);
        		Student student = new Student("홍박사");
        		System.out.println(student);
        
        		// 값 삭제
        		list.remove(2); // index 2번째 요소 삭제
        		System.out.println("값 삭제 확인 : " + list);
        
        		// 전체 삭제
        		// list.clear();
        		System.out.println("전체 삭제 확인 " + list);
        
        		// 리스트 사이즈 확인 (요소의 갯수, 사이즈 개념)
        		System.out.println(list.size());
        
        		// 하나의 요소를 꺼내는 방법
        		try {
        			System.out.println(list.get(0));
        		} catch (Exception e) {
        			System.out.println("프로그램이 종료 되지 않게 처리");
        		}
        
        		// ArrayList 와 반복문에 활용
        		nums = list; // 복사 개념 필!!!!!! 얕은 복사 개념!!!
        		System.out.println(list);
        		System.out.println("--------------");
        
        		list.add(10000); // 추가 기능
        		System.out.println(nums);
        
        		// for (Integer i : list) {}  <-- list 는 컴파일 시점에 Object 타입으로 인식 
        		for (Integer i : nums) {
        			System.out.println("i : " + i);
        		}
        		
        		// ArrayList 안에 값이 포함 되어 있는가 확인 
        		System.out.println("3이 nums 리스트에 존재 하는가? --> " + nums.contains(3));
        		System.out.println("500이 nums 리스트에 존재 하는가? --> " + nums.contains(500));
        		
        		// 요소의 위치(index) 확인 
        		System.out.println("요소 3이 몇 번째 인덱스에 위치 하니 -> " + nums.indexOf(3));
        		System.out.println("요소 10이 몇 번째 인덱스에 위치 하니 -> " + nums.indexOf(10));
        		System.out.println("요소 500이 몇 번째 인덱스에 위치 하니 -> " + nums.indexOf(500));
        		
        		
        		// Iterator 요소 순회( 반복자 )
        		Iterator<Integer> iter = nums.iterator();
        		while(iter.hasNext()) {
        			System.out.println("while 을 활용하는 방법 : " + iter.next());
        		}
        		// 배열, ArrayList 사용해야 할 때을 알자 !! 
        		
        
        	} // end of main
        
        } // end of class
        
        

        도전 학습

        예제 개념: 영화 평점 관리 시스템

        상황 설명: 사용자가 영화에 평점을 주고, 평점에 따라 영화 추천 목록을 관리하는 시스템입니다. 사용자는 영화에 1부터 5까지의 평점을 줄 수 있으며, 평점이 높은 영화부터 낮은 순으로 정렬하여 보여줍니다.

        package structure.ch05;
        
        import java.util.ArrayList;
        import java.util.Collections;
        import java.util.Comparator;
        
        public class MovieRationgSystem {
        
        	
        	public static void main(String[] args) {
        		// Movie Object 계속 추가하는 자료구조
        		ArrayList<Movie> movies = new ArrayList<Movie>();
        		movies.add(new Movie("범죄도시 4", 5));
        		movies.add(new Movie("기생충", 4));
        		movies.add(new Movie("올드보이", 5));
        		movies.add(new Movie("인생은아름다워", 3));
        		
        		System.out.println(movies);
        		
        		for (Movie movie : movies) {
        			System.out.println(movie.getTitle());
        		}
        		System.out.println("--------------------------");
        		for (int i = 0; i < movies.size(); i++) {
        			// 배열이 아님 --> get() 메서드 사용 
        			System.out.println(movies.get(i).getTitle()); 
        		}
        		
        		// 어떤 데이터를 정렬을 하려면 정렬 알고리즘을 구현해서 기능을 만들어 주면 된다. 
        		// 버블 정렬, 퀵, 선택 가능 .... 
        		// 자바 표준 API 사용 
        		Collections.sort(movies, new Comparator<Movie>() {
        			@Override
        			public int compare(Movie m1, Movie m2) {
        				return Integer.compare(m2.getRating(), m1.getRating());
        			}
        		});
        		System.out.println("-------------------------------------------");
        		// 평점 순으로 정렬된 영화 목록 출력 
        		for (Movie movie : movies) {
        			System.out.println(movie);
        		}
        		
        	} // end of main 
        
        } // end of class 
        
        class Movie {
        	
        	private String title; 
        	private int rating; 
        	
        	public Movie(String title, int rating) {
        		this.title = title; 
        		this.rating = rating;
        	}
        	
        	public String getTitle() {
        		return title;
        	}
        
        	public int getRating() {
        		return rating;
        	}
        
        	@Override
        	public String toString() {
        		return "Movie [title=" + title + ", rating=" + rating + "]";
        	}	
        }
        
        --------------------------
        범죄도시 4
        기생충
        올드보이
        인생은아름다워
        -------------------------------------------
        Movie [title=범죄도시 4, rating=5]
        Movie [title=올드보이, rating=5]
        Movie [title=기생충, rating=4]
        Movie [title=인생은아름다워, rating=3]
        

        'Data Structure( 자료구조 ) > 컬렉션 프레임워크' 카테고리의 다른 글

        Map 인터페이스  (0) 2024.09.15
        Set 인터페이스  (0) 2024.09.15
        컬렉션 프레임워크(collection framework)란?  (0) 2024.09.15
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바