다크호스 프로그래머--Collection
Collection은 Collection 계층 구조의 루트 인터페이스입니다.Collection은 컬렉션의 요소라고도 하는 객체 그룹을 나타냅니다.일부collection은 중복된 요소를 허용하지만, 다른 일부는 허용하지 않습니다.일부collection은 질서가 있고, 다른 일부는 무질서하다.JDK는 이 인터페이스의 직접적인 구현을 제공하지 않습니다. 더 구체적인 하위 인터페이스 (예: Set과 List) 를 제공합니다.이 인터페이스는 보통 컬렉션을 전달하는 데 사용되며, 가장 보편적인 곳에서 컬렉션을 조작합니다.
Collection의 주요 하위 인터페이스는 Set, List, Deque,Queue입니다.
1、Set:
Set의 기본 하위 클래스는 HashSet과 TreeSet입니다.Set은 중복 요소를 포함하지 않는collection입니다.더 정확히 말하면 set는 e1을 가득 포함하지 않습니다.equals(e2)의 원소는 e1과 e2에 대해 최대 1개의null 원소를 포함한다.이름이 암시하는 바와 같이 이 인터페이스는 수학적 set 추상을 모방했다.모든 구조방법과dd,equals,hashCode방법의 협정에 Set인터페이스는 다른 규정을 추가했는데 이런 규정은Collection인터페이스에서 계승된 내용을 초과했다.편리한 고려에서 다른 계승 방법의 성명도 포함했다. (이 성명들의 규범은 Set 인터페이스를 대상으로 수정되었지만 다른 규정은 포함되지 않았다.)
주요 방법:
add();set에 지정한 요소가 존재하지 않으면 이 요소를 추가합니다.
addAll();set에collection의 모든 요소가 지정되지 않으면 이 set에 추가합니다.
clear();이 set의 모든 요소를 제거합니다.
contains();set에 지정한 요소가 포함되면true를 되돌려줍니다.
iterator();set에서 원소를 교체하는 교체기를 되돌려줍니다.
remove();set에서 지정된 요소를 제거합니다.
removeAll();set의 모든 요소를 제거합니다.
Size();set 크기를 반환합니다.
toArray();set의 모든 요소를 포함하는 그룹을 되돌려줍니다.
Set의 HashSet: 이 종류의 구현 Set 인터페이스는 해시표 (실제로는 HashMap 실례) 에서 지원합니다.이것은 set의 교체 순서를 보장하지 않습니다.특히 이 순서가 영원히 변하지 않을 것을 보장하지 않는다.이것은null 요소를 사용할 수 있습니다.이런iterator 방법으로 되돌아오는 교체기는 빠르게 실패합니다. 교체기를 만든 후에 set을 수정하면 교체기 자체의remove 방법을 통과하지 않으면 언제든지 어떤 방식으로든 수정할 수 있습니다. Iterator는 ConcurrentModificationException을 던집니다.따라서 병발적인 수정에 직면하면 교체기는 곧 완전히 실패할 것이며, 장래에 어떤 불확정한 시간에 임의의 불확정 행위가 발생할 위험을 무릅쓰지 않을 것이다.
Set의 TreeSet: TreeMap 기반의 NavigableSet 구현.원소의 자연 순서를 사용하여 원소를 정렬하거나 set을 만들 때 제공한Comparator에 따라 정렬하는 것은 구체적으로 사용하는 구조 방법에 달려 있다.이런iterator 방법으로 되돌아오는 교체기는 빠르게 실패합니다. 교체기를 만든 후에 구조적으로 set을 수정하면 교체기 자체의remove 방법을 통과하지 않으면 다른 어느 때든 어떤 방식으로든 수정할 수 있습니다.따라서 병발적인 수정에 대해 교체기는 곧 완전히 실패하고 장래에 확실하지 않은 시간에 확실하지 않은 행위가 발생할 위험을 무릅쓰지 않는다.
2、List:
List는 컬렉션의 각 요소에 해당하는 순서 시퀀스가 있는 순서의 컬렉션입니다.List 집합은 중복 요소를 사용할 수 있으며 색인을 통해 지정된 위치의 집합 요소에 접근할 수 있습니다. (순서 색인은 0에서 시작합니다.) List 집합은 기본적으로 요소의 추가 순서에 따라 요소의 색인을 설정합니다. 예를 들어 첫 번째 요소의 색인은 0입니다. 마치 수조와 같습니다.
주요 방법:
add (int index, Object e): 요소 e를List 집합의 index에 추가합니다.
addall(int index, Collection c): 집합 c에 포함된 모든 요소를List 집합의 index에 삽입하기;
get (int index): index 인덱스를 집합한 요소를 되돌려줍니다.
indexOf(Object o): 대상 o가List 집합에서 처음으로 나타난 위치의 인덱스를 되돌려줍니다.
lastIndex Of (object o): 대상 o가List 집합에서 마지막으로 나타난 위치 인덱스를 되돌려줍니다.
remove (int index): index 인덱스에 있는 요소를 삭제하고 되돌려줍니다.
set (int index, Object e): 집합 index의 요소를 e 대상으로 바꾸고 이전에 지정한 위치의 요소로 되돌려줍니다.
list (int fromIndex, int toIndex): 모든fromIndex (포함) 에서 toIndex (포함하지 않음) 까지 모든 집합 요소의 하위 집합을 되돌려줍니다.
List의 일반 클래스:
Vector: 스레드는 안전하지만 속도가 느려서 ArrayList로 대체되었습니다.
ArrayList: 스레드가 안전하지 않으며 조회 속도가 빠릅니다.
LinkedList: 체인 테이블 구조로 삭제 속도가 빠릅니다.
Array List는 라인이 안전하지 않고 Vector는 라인이 안전하지만 그래도 Vector를 사용하는 것을 추천하지 않습니다. 왜냐하면 Collections는 라인이 안전한 Array List 대상을 얻을 수 있는 방법이 있기 때문입니다. (Collections 클래스: static List synchronized List (List) 는 지정한 목록이 지원하는 동기화 (라인이 안전한) 목록을 되돌려줍니다.
3. Queue 인터페이스: 아날로그 대기열: 선진 선출(FIFO).
주요 방법:
add(Object e): e를 대기열 끝에 삽입합니다.
요소 (): 대기열 헤더의 요소 가져오기;
offer (Object e): e를 대기열의 끝에 삽입합니다. 용량이 제한된 대기열을 사용할 때add (Object e) 방법보다 이 방법이 좋습니다.
peek (): 대기열 헤더의 요소를 가져옵니다.만약 이 양단 대기열이 비어 있다면,null을 되돌려줍니다.
poll (): 대기열 헤더의 요소를 가져오고 삭제합니다.만약 이 양단 대기열이 비어 있다면,null을 되돌려줍니다.
remove (): 대기열 헤더의 요소를 가져오고 삭제합니다.
4. Deque 인터페이스: Deque는Queue의 하위 인터페이스입니다.
주요 방법:
addFirst (Object e): 이 양방향 대기열의 시작에 요소를 삽입합니다.
addLast(Object e): 이 요소를 양방향 대기열의 끝에 삽입합니다.
getLast (): 대기열의 마지막 요소를 가져오지만 삭제하지 않습니다.
getFirst (): 대기열의 첫 번째 요소를 가져오지만 삭제하지 않습니다.
fferFirst (Object e): 지정한 요소를 이 양방향 대기열의 시작에 삽입합니다.
fferLast(Object e): 지정된 요소를 양방향 대기열의 끝에 삽입합니다.
removeFirst(): 첫 번째 요소 삭제
removeLast(): 마지막 요소 삭제
주요 클래스 사용 예:
TreeSet:
한 회사 내의 직원이 성명과 나이가 있으니, 나이순으로 그들을 배열해 주십시오.
코드는 다음과 같습니다.
package bokedemo;
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetDemo {
public static void main(String[] args) {
TreeSet tset=new TreeSet<>(new Comparator() {
@Override
public int compare(Employer o1, Employer o2) {
if(o1.getAge()>o2.getAge())
return 1;
else if(o1.getAge() iterator=tset.iterator();
while(iterator.hasNext())
{
Employer employer=iterator.next();
System.out.println(employer.getName()+":"+employer.getAge()+" ");
}
}
}
/**
* ,name ,age 。
* @author Cam
*
*/
class Employer
{
private String name;
private int age;
public Employer(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.