안 드 로 이 드 기초 지식

3341 단어
ps: 기초 지식 이 약 하고 물 어보 면 아무것도 모른다. 그래서 이 글 은 문제 에 따라 인터넷 에서 각종 대 신의 해석 과 자신의 이 해 를 결합 하여 문장 을 정리 하여 기억 을 강화 하도록 한다.
1. Array,ArrayList,List
Array :
배열 은 메모리 에 연속 으로 저장 되 어 있 기 때문에 그의 색인 속 도 는 매우 빠 르 고 그의 할당 과 수정 도 매우 간단 하 다.그러나 성명 할 때 배열 의 길 이 를 제시 해 야 하 며 배열 의 길 이 를 동적 으로 수정 할 수 없습니다.
ArrayList
  • ArrayList 는 동적 배열 을 바탕 으로 하 는 데이터 구조
  • 를 실현 했다.
  • 빠 른 속도 로 모든 요 소 를 방문 할 수 있 습 니 다. 성능 문 제 를 고려 하지 않 고 get (i) 방법 으로 아래 표 시 된 배열 요 소 를 방문 할 수 있 습 니 다.
  • 대상 을 추가 하 는 속도 가 느 립 니 다. 배열 을 만 드 는 것 은 용량 을 확인 할 수 없 기 때문에 이 배열 을 바 꿀 때 메모리 에서 많은 일 을 해 야 합 니 다.
  • 대상 을 조작 하 는 속도 가 느 립 니 다. 배열 의 임 의 두 요소 사이 에 대상 을 추가 하려 면 배열 은 모든 뒤의 대상 을 이동 해 야 합 니 다.
  • 용량 은 데이터 의 크기 에 따라 달라 집 니 다. 매번 확장 하 는 크기 는 자신의 50% 이지 만 안전 하지 않 은 유형 과 포장 박스 의 성능 손실 이 존재 합 니 다. Array List 는 모든 데 이 터 를 object 형식 으로 처리 하기 때문에 서로 다른 유형의 데 이 터 를 삽입 할 수 있 습 니 다. 예 를 들 어
  • ArrayList list = new ArrayList();
    //    
     list.Add("abc"); list.Add(123);
    //    
     list[2] = 345;
    //    
     list.RemoveAt(0);
    //     
    list.Insert(0, "hello world");
    

    우리 가 Array List 의 데 이 터 를 사용 하여 문 제 를 처리 할 때 유형 이 일치 하지 않 는 오 류 를 보고 할 수 있 습 니 다. 즉, Array List 는 유형 이 안전 하지 않 습 니 다.데 이 터 를 삽입 할 때 조 심 스 럽 고 같은 유형의 데 이 터 를 삽입 했다 고 보장 하지만 사용 할 때 우 리 는 이 를 대응 하 는 원래 유형 으로 바 꾸 어 처리 해 야 한다.이것 은 포장 과 상 자 를 뜯 는 작업 이 존재 하여 매우 큰 성능 손실 을 가 져 올 것 이다.
  • 포장 과 해체 의 개념 포장: 데이터 형식의 값 을 object 대상 o
  • 에 부여 합 니 다.
    int i=123; object o=(object)i;
    

    뜯 기: object 대상 o 의 값 이 int 형식의 변수 i 에 부 여 됩 니 다.
    object o=123; int i=(int)o;
    

    포장 과 상 자 를 뜯 는 과정 은 성능 을 매우 손상 시킨다.
    List
    바로 Array List 가 안전 하지 않 은 유형 과 포장 해 상 자 를 뜯 는 단점 이 있 기 때문에 C \ # 2.0 이후 에 일반적인 개념 이 나 타 났 다.한편, List 류 는 Array List 류 의 범 형 등가 류 이다.대부분의 용법 은 Array List 와 비슷 하 다. List 류 도 IList 인 터 페 이 스 를 계승 하기 때문이다.가장 관건 적 인 차 이 는 성명 List 집합 시, 우 리 는 그 성명 List 집합 내 데이터 의 대상 유형 을 동시에 필요 로 한 다 는 것 이다.예 를 들 면:
    List list = new List();
    //    
    list.Add(123);
    //     
    list[0] = 345;
    //    
    list.RemoveAt(0);
    

    동시에 List 는 구 조 될 수 없 지만, 위 와 같이 List 에 인용 을 만 들 수 있 으 며, ListArray 는 구 조 될 수 있 습 니 다.
    List list;     //     list=null; 
    List list=new List();    //         
    

    List list = new ArrayList();이 문장 은 Array List 의 대상 을 만 든 후 List 로 거 슬러 올 라 갔다.이 때 는 List 대상 입 니 다. 일부 Array List 는 있 지만 List 에 없 는 속성 과 방법 이 있 으 면 더 이상 사용 할 수 없습니다.그리고 ArrayList list = new ArrayList ();대상 을 만 들 면 ArrayList 의 모든 속성 이 유 지 됩 니 다.
  • List 범 형의 장점: 범 형 류 나 방법 을 지정 하여 조작 할 수 있 는 특정한 유형 을 통 해 범 형 기능 은 유형 안전 한 임 무 를 컴 파일 러 에 옮 겼 습 니 다.컴 파일 할 때 정확 한 데이터 형식 을 강제로 사용 하기 때문에 코드 를 작성 할 필요 가 없습니다.유형 강제 전환 의 필요 와 실행 시 오류 가 발생 할 가능성 을 줄 였 습 니 다.범 형 은 유형 안전 을 제공 하지만 여러 개의 실현 비용 을 증가 하지 않 았 다.

  • LinkedList
    Array List 와 LinkedList 의 용법 차이:
  • ArrayList 는 동적 배열 을 바탕 으로 하 는 데이터 구 조 를 실현 하고 LinkedList 는 링크 를 바탕 으로 하 는 데이터 구 조 를 실현 했다.
  • 랜 덤 액세스 get 과 set 에 대해 Array List 는 LinkedList 보다 낫다 고 생각 합 니 다. LinkedList 는 지침 을 이동 해 야 하기 때 문 입 니 다.
  • 추가 및 삭제 작업 add 와 reove 에 대해 서 는 linedList 가 우세 합 니 다. ArrayList 가 데 이 터 를 이동 해 야 하기 때 문 입 니 다.

  • LinkedList 의 장단 점:
  • 작업 중 대상 의 속도 가 빠 르 면 연결 만 바 꾸 면 됩 니 다. 새로운 노드 는 메모리 의 어느 곳 에서 도 접근 할 수 없습니다. get () 방법 이 있 지만 이 방법 은 접점 을 옮 겨 다 니 며 포 지 셔 닝 하기 때문에 속도 가 느 립 니 다
  • 좋은 웹페이지 즐겨찾기