Java 베이스 06 컬렉션 클래스

4439 단어
Java Basic 05Java API
컬렉션 개요
  • 수량이 명확하지 않은 대상을 보존하기 위해 jdk에서 일련의 특수한 클래스를 제공했다. 이런 클래스는 임의의 유형의 대상을 저장할 수 있고 길이가 변할 수 있어 집합이라고 부른다.
  • 집합은 두 가지 유형의 단일 집합 Collection과 이중 집합 맵
  • 으로 나뉜다.
    Collection 커넥터
    Collection은 모든 단일 열 집합의 부모 인터페이스입니다
    기능 추가(숙련)
    boolean add(Object obj):
    boolean addAll(Collection c):
    

    삭제 기능(숙련)
    void clear():
    boolean remove(Object obj):
    boolean removeAll(Collection c):
    

    판단 기능(장악)
    boolean isEmpty():
    boolean contains(Object obj):
    boolean containsAll(Collection c):
    

    역주행 기능(습득)
    Iterator iterator():
    

    길이 기능(숙련)
    int size():
    

    교차 기능
    boolean retainAll(Collection c):
    

    전환 기능
    Object[] toArray():
    

    List 커넥터
  • ArrayList: 베이스 데이터 구조는 수조로 조회가 빠르고 삭제가 느리며 라인이 안전하지 않고 효율이 높다
  • Vector: 베이스 데이터 구조는 수조로 조회가 빠르고 삭제가 느리며 라인이 안전하고 효율이 낮다
  • LinkedList: 베이스 데이터 구조는 체인 테이블로 조회가 느리고 삭제가 빠르며 라인이 안전하지 않고 효율이 높다
  • List 특유의 기능: List 특유의 기능
  • 기능 추가
    void add(int index,Object obj):
    

    삭제 기능
    Object remove(int index):
    

    수정 기능
    Object set(int index,Object obj):
    

    가져오기 기능
    Object get(int index):
    int indexOf(Object obj):
    ListIterator listIterator():
    

    set 인터페이스
  • HashSet: 밑바닥 데이터 구조는 해시표입니다.어떻게 원소의 유일성을 보증합니까?두 가지 방법에 의존하다.hashCode() 및 equals().앞으로 자동으로 생성됩니다.
  • TreeSet: 밑바닥 데이터 구조는 두 갈래 나무입니다.어떻게 원소의 유일성을 보증합니까?어떻게 원소의 정렬을 보장합니까?반환 값이 0인지 여부에 따라 원소가 중복되는지 판단합니다.정렬에는 두 가지 방안이 있는데 그것이 바로 요소가 비교성을 갖추고 Comparable 인터페이스를 실현하는 것이다.Comparator 인터페이스를 비교적으로 구현하는 컬렉션
  • Map 커넥터
  • HashMap: 객체의 구성원 변수 값이 모두 같으면 동일한 객체로 간주합니다.
  • TreeMap: 객체의 구성원 변수 값이 모두 같으면 동일한 객체로 간주합니다.동시에 우리는 나이에 따라 순서를 정해야 한다.

  • 범용
  • 범주:
  • 일반 인터페이스
  • 일반적인 방법
  • 일반적인 역할: 운행 시기에 발생할 수 있는 오류를 컴파일 시기로 앞당기고 수조를 참고하여 유형을 미리 정하여 강제 전환을 피한다.

  • Hash와 Tree 쓰기 대상은 주의해야 할 사항입니다
    HashSet의dd() 방법을 통해 사용자 정의 대상을 무겁게 하려면,hashCode와 equals 두 가지 방법을 다시 사용해야 한다는 것을 알 수 있습니다
    equals 방법 다시 쓰기 절차
    public boolean equals(Object obj){
            //    
            //     
            //    ,             null  
    }
    @Override
    public boolean equals(Object obj) {
        System.out.println(this + "----------" + obj);
        //    
        if(obj == this){
            return true;
        }
        //     
        if(!(obj instanceof Student)){
            return false;
        }
        Student s = (Student)obj;
        if(s.name != null){
            if(this.name.equals(s.name)){
                if(this.age == s.age){
                    return true;
                }
            }
        }
        return false;
    }
    

    hashCode 메서드 재작성 단계
    public int hashCode(){
        return          ;
        //       hashCode ,            
    //      ,            1  ,
    //                   ,    equals  ,    
    }
    @Override
    public int hashCode() {
        // TODO Auto-generated method stub
        return this.name.hashCode() + this.age * 13;
    }
    

    TreeSet에는 두 가지 방법이 있는데 하나는 대상이comparable 인터페이스를 실현하고compareTo를 다시 쓰는 방법이다. 다른 하나는 비교기 대상을 만드는 것이다. 비교기 대상에서comparator 인터페이스를 실현하고compare 방법을 다시 쓰는 것이다. TreeSet 대상을 만들 때 비교기 대상을 만드는 것이다.
    매개 변수로 전달하거나 매개 변수로 익명 내부 클래스 사용하기
    @Override
    public int compareTo(Person o) {
        // TODO Auto-generated method stub
        //           
        int num = this.name.length() - o.name.length();
        //        
        num = (num == 0) ? this.age - o.age : num;
        //         
        num = (num == 0) ? this.name.compareTo(o.name) : num;
        return num;
    }
    
    public class MyComparator implements Comparator {
    
    @Override
    public int compare(Student o1, Student o2) {
        // TODO Auto-generated method stub
        //           
        int num = o1.getName().length() - o2.getName().length();
        //        
        num = (num == 0) ? o1.getAge() - o2.getAge() : num;
        //         
        num = (num == 0) ? o1.getName().compareTo(o2.getName()) : num;
        return num;
        }
    }
    
    //       
    //MyComparator mc = new MyComparator();
    //      
    
    //new   (){};                   
    //new  (){};                   
    TreeSet ts = new TreeSet(
      new Comparator() {
    
        @Override
        public int compare(Student o1, Student o2) {
            //         
            return o1.getAge() - o2.getAge();
        }
          
      }
    );
    

    Java Basic 07IO

    좋은 웹페이지 즐겨찾기