Set과 List의 차이점은 무엇입니까?
의 근본적인 차이는 무엇입니까?Set<E>
★★★★★★★★★★★★★★★★★」List<E>
★★★★★★★★★★★★★★★★★★?
List
가 매겨진 순서인데 반해, 는 요소의 입니다.Set
정렬되지 않은 요소의 명확한 목록입니다(감사합니다, 퀸 테일러).
순서부 컬렉션(시퀀스라고도 불립니다).이 인터페이스의 사용자는 목록의 각 요소가 삽입되는 위치를 정확하게 제어할 수 있습니다.사용자는 정수 인덱스(목록의 위치)로 요소에 액세스하여 목록에서 요소를 검색할 수 있습니다.
중복된 요소가 없는 컬렉션입니다.보다 형식적으로 말하면, 세트에는 e1.equals(e2)와 같은 요소 e1과 e2의 쌍이 없고, 최대 1개의 늘 요소가 포함되어 있습니다.이름에서 알 수 있듯이 이 인터페이스는 수학적 집합 추상화를 모델링합니다.
목록. | 세트 | |
---|---|---|
중복 | 네. | 아니요. |
주문 | 주문된 | 구현에 따라 다름 |
위치 액세스 | 네. | 아니요. |
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
라는 Java 합니다.List
로 할 수 .
다음을 사용하여 구현됨
- 링크 리스트
- 어레이 리스트
"이것들"은 다음과 같습니다.
라는 Java 합니다.Set
인덱스로 액세스할 수 없습니다.
다음을 사용하여 구현됨
- 해시 세트(순서 없음)
- Linked Hash Set(주문)
- TreeSet(자연순서 또는 제공된 대조군에 따라 정렬됨)
" " "Set
★★★★★★★★★★★★★★★★★」List
Collection
목록에는 중복 요소를 포함할 수 없지만 집합에는 중복 요소를 포함할 수 없습니다.목록(Java)은 순서도 나타냅니다.
- 리스트는 품목의 정렬된 그룹입니다.
- 집합은 중복이 허용되지 않는 항목의 순서 없는 그룹입니다(일반적으로).
개념적으로 우리는 보통 중복을 가방으로 허용하고 중복을 허용하지 않는 무질서한 그룹을 말합니다.
리스트:
List
는 일반적으로 중복된 오브젝트를 허용합니다. List
는 반드시 주문되어야 하며, 따라서 인덱스로 접근할 수 있습니다.
는 다음과 같습니다.ArrayList
,LinkedList
,Vector
설정:
Set
는 중복 객체를 허용하지 않습니다.대부분의 구현은 순서가 정해져 있지 않지만 구현마다 다릅니다.
는 다음과 같습니다.HashSet
(무질서),LinkedHashSet
(주문),TreeSet
(자연순서 또는 제공된 대조군에 의해 정렬됨)
목록.
- 요소의 정렬된 그룹입니다.
- 목록은 중복된 요소를 수집하기 위해 사용됩니다.
- List 인터페이스 내에 새로운 메서드가 정의되어 있습니다.
세트
- 요소의 정렬되지 않은 그룹입니다.
- 집합은 중복되지 않은 요소의 수집에 사용됩니다.
- Set 인터페이스 내에 새로운 메서드가 정의되어 있지 않기 때문에 Set 서브클래스에만 Collection 인터페이스 메서드를 사용해야 합니다.
List에서는 중복된 요소와 늘 값을 사용할 수 있습니다.요소의 해당 인덱스를 사용하여 쉽게 검색할 수 있으며 요소를 삽입 순서대로 표시합니다. ( list (linked list)
import java.util.*;
public class ListExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<Integer> l=new LinkedList<Integer>();
l.add(001);
l.add(555);
l.add(333);
l.add(888);
l.add(555);
l.add(null);
l.add(null);
Iterator<Integer> il=l.iterator();
System.out.println(l.get(0));
while(il.hasNext()){
System.out.println(il.next());
}
for(Integer str : l){
System.out.println("Value:"+str);
}
}
}
출력:
1
1
555
333
888
555
: 1
인치: 555
인치: 333
°: 888
인치: 555
: : : Null
: : : Null
★★★★★★★:
집합은 중복 요소를 허용하지 않으며 단일 null 값을 허용합니다.요소를 표시하는 순서를 유지하지 않습니다.만.TreeSet
는 오름차순으로 표시됩니다.
예:(트리 세트)
import java.util.TreeSet;
public class SetExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
TreeSet<String> set = new TreeSet<String>();
try {
set.add("hello");
set.add("world");
set.add("welcome");
set.add("all");
for (String num : set) {
System.out.println( num);
}
set.add(null);
} catch (NullPointerException e) {
System.out.println(e);
System.out.println("Set doesn't allow null value and duplicate value");
}
}
}
출력:
의 준비를 갖추다
공통의
.sva.svaaces.sva.sv.aces.Null ().
does not value null null입니다.
Java 인터페이스에 대해 이야기하고 있는데 Javadoc을 살펴보는 것은 어떨까요?
- A
List
시퀀스을 허용합니다.일반적으로 중복이 허용됩니다. - A
Set
요소를 하지 않는 될 수 있습니다.반복 순서는 구현에 의해 보증될 수 있습니다.
세트에 대한 순서 부족에 대한 언급은 없습니다. 구현에 따라 다릅니다.
세트는 순서가 매겨지지 않은 개별 개체 그룹입니다. 중복 개체는 허용되지 않습니다.일반적으로 삽입되는 개체의 해시 코드를 사용하여 구현됩니다.(특정 구현에 따라 순서가 추가될 수 있지만 Set 인터페이스 자체는 추가되지 않습니다).
목록은 중복될 수 있는 정렬된 개체 그룹입니다. 방법은 '아까운가보다'로 할 수 있습니다.ArrayList
,LinkedList
등등.
이것은 여러분이 찾고 있는 답이 아닐 수도 있지만, 컬렉션 클래스의 JavaDoc은 실제로 매우 알기 쉬운 것입니다.복사/붙여넣기:
순서부 컬렉션(시퀀스라고도 불립니다).이 인터페이스의 사용자는 목록의 각 요소가 삽입되는 위치를 정확하게 제어할 수 있습니다.사용자는 정수 인덱스(목록의 위치)로 요소에 액세스하여 목록에서 요소를 검색할 수 있습니다.
세트와 달리 목록에는 일반적으로 중복 요소가 허용됩니다.좀 더 형식적으로 말하면, 목록에서는 일반적으로 e1.equals(e2)와 같은 요소 e1과 e2의 쌍을 허용하며, null 요소를 허용하는 경우에는 일반적으로 여러 null 요소를 허용합니다.사용자가 중복을 삽입하려고 할 때 런타임 예외를 발생시킴으로써 중복을 금지하는 목록을 구현하려는 것은 상상할 수 없지만, 이 사용법은 드물 것으로 예상됩니다.
요인 | 목록. | 세트 |
---|---|---|
정렬된 그룹화 요소입니까? | 네. | 아니요. |
인덱스로 위치 액세스를 제공합니까? | 네. | 아니요. |
중복된 요소를 저장할 수 있습니까? | 네. | 아니요. |
개의 " " " " 를 저장할 수 있습니다.null 요?? |
네. | 아니요. |
자녀: | ArrayList ,LinkedList ,Vector , , , , 입니다.Stack |
HashSet ★★★★★★★★★★★★★★★★★」LinkedHashSet |
List 와 Set 는 모두 인터페이스입니다.둘 다 Collection 인터페이스를 확장합니다.set와 list의 중요한 차이점은 다음과 같습니다.
- 중복 객체
List와 Set의 주요 차이점은 List는 중복을 허용하지만 Set은 중복을 허용하지 않는다는 것입니다.
- 주문
List는 삽입 순서를 유지하는 순서 집합입니다.즉, 목록 내용을 표시할 때 목록에 삽입된 순서와 동일한 순서로 요소가 표시됩니다.
집합은 순서가 매겨지지 않은 집합이므로 순서를 유지하지 않습니다.Linked Hash Set 등의 순서를 유지하는 Set의 실장은 거의 없습니다(요소를 삽입 순서로 유지합니다).
- 특수한 요소
목록에는 임의의 수의 늘 요소가 허용됩니다.집합에는 최대 1개의 null 요소만 포함할 수 있습니다.
1. List는 중복된 값을 허용하고 set는 중복된 값을 허용하지 않습니다.
2. List는 목록에 요소를 삽입한 순서를 유지합니다. Set does not maintength order . 3.리스트는 요소의 순서가 매겨진 순서이며, 세트는 순서가 매겨지지 않은 요소의 개별 리스트입니다.
Java에서의 List와 Set의 주목할 만한 차이는 다음과 같습니다.
1) Java의 List와 Set의 근본적인 차이점은 중복된 요소를 허용한다는 것입니다.Java 목록에서는 중복을 허용하지만 Set에서는 중복을 허용하지 않습니다.세트에 중복을 삽입하면 이전 값이 대체됩니다.Java에서의 Set 구현에는 고유한 요소만 포함됩니다.
2) Java의 List와 Set의 또 다른 중요한 차이점은 순서입니다.목록은 정렬된 컬렉션이고 집합은 정렬되지 않은 컬렉션입니다.리스트는 요소의 삽입 순서를 유지합니다.즉, 이전에 삽입된 요소는 그 후에 삽입된 요소보다 낮은 인덱스로 이동합니다.Java로 설정하면 순서가 유지되지 않습니다.단, Set은 SortedSet이라는 다른 대체 수단을 제공합니다.SortedSet은 Set에 저장된 객체의 Comparible 메서드와 Comparator 메서드에 의해 정의된 특정 정렬 순서로 Set 요소를 저장할 수 있습니다.
3) Java에서의 List 인터페이스의 일반적인 구현에는 ArrayList, Vector 및 LinkedList가 있습니다.Set 인터페이스의 일반적인 구현에는 HashSet, TreeSet 및 LinkedHashSet이 포함됩니다.
삽입 순서나 오브젝트를 유지할 필요가 있고 컬렉션에 중복을 포함할 수 있는 경우에는 List를 사용하는 것이 좋습니다.한편 중복되지 않고 고유한 컬렉션을 유지하려면 Set을 사용하는 것이 좋습니다.
리스트와 세트
1) Set은 중복을 허용하지 않습니다.목록에는 중복이 허용됩니다.세트의 실장에 근거해, 삽입 순서도 유지합니다.
예:LinkedHashSet
. 삽입 순서를 유지합니다.여기를 클릭해 주세요.
2) 메서드를 포함합니다.세트의 특성상 액세스 성능이 향상됩니다.가장 좋은 경우는 o(1)입니다.그러나 List에 호출할 성능 문제가 있습니다.contains
.
<고객명>님List
클래스는 삽입 순서를 유지합니다.나 그 해 다른 실장을 예: 「실행하지 않는다」ArrayList
인덱스의 는, 「」를 참조해 주세요.LinkedList
키가 없으므로 중복이 허용됩니다.
Set
클래스는 삽입 순서를 유지하지 않습니다.할 수도 있습니다( 「」와 같이).SortedSet
몇해시함수(「」와 같이)에 순서가 .HashSet
Set
는 키로 액세스 됩니다.복제할 수 없습니다.
가장 큰 차이점은 기본 콘셉트입니다.
Set and List 인터페이스에서.집합은 수학 개념입니다.set 메서드는 컬렉션을 확장합니다.단, 새로운 메서드를 추가하지 않습니다.size()는 카디널리티(BitSet.cardinality, Linear counter'Log'Log'HyperLog)를 의미합니다.addAll()은 결합을 의미합니다.retain All()은 교차로를 의미합니다.removeAll()은 차이를 의미합니다.
단, 이러한 개념의 결여를 열거합니다.컬렉션 인터페이스가 제공하지 않는 시퀀스 개념을 지원하기 위해 많은 메서드를 추가합니다.핵심 개념은 INDEX입니다.add(index,element),get(index),search(indexOf()),remove(index) 요소 등입니다.목록에는 "Collection View" 하위 목록도 제공됩니다.세트에 뷰가 없습니다. 위치 액세스 권한이 없습니다.또한 목록에는 컬렉션 클래스에 많은 알고리즘이 있습니다.sort(목록), binarySearch(목록), reverse(목록), shuffle(목록), fill(목록)을 선택합니다.메서드 매개 변수는 List interface입니다. 중복 요소는 개념의 결과일 뿐입니다.본질적인 차이가 아닙니다.
그래서 본질적인 차이는 개념입니다.집합은 수학 집합 개념입니다.리스트는 시퀀스 개념입니다.
주문 중...목록에는 순서가 있지만 집합에는 순서가 없습니다.
리스트:
- 중복이 허용됩니다.
- 요소를 그룹화하여 정렬합니다.(즉, 순서가 정해져 있다.오름차순으로 정렬할 필요 없음)
설정:
- 중복은 허용되지 않습니다.
- 요소를 그룹화할 때 순서가 맞지 않습니다.(즉, 순서가 정해져 있지 않습니다.오름차순으로 배열될 수도 있고 아닐 수도 있습니다.)
Set<E>
그리고.List<E>
둘 다 유형의 요소를 저장하는 데 사용됩니다.E
다른 점은Set
는 순서 없이 저장되며 중복된 값은 허용되지 않습니다. List
요소를 순서대로 저장하는 데 사용되며 중복된 값을 허용합니다.
Set
인덱스 위치에서 요소에 액세스할 수 없습니다.List
요소에는 인덱스 위치를 사용하여 액세스할 수 있습니다.
Set: 집합의 컬렉션에 중복 요소를 포함할 수 없습니다.순서 없는 컬렉션이기도 합니다.세트에서 데이터에 액세스하려면 반복기만 사용해야 하며 인덱스 기반 검색은 불가능합니다.주로 고유성 수집이 필요할 때마다 사용됩니다.
목록: 목록은 삽입할 때 자연스러운 순서로 중복된 요소를 가질 수 있습니다.따라서 인덱스 또는 반복기를 기반으로 데이터를 검색할 수 있습니다.인덱스를 기반으로 액세스해야 하는 컬렉션을 저장하는 데 널리 사용됩니다.
안녕하세요. 벌써 많은 답변이 올라오고 있습니다.지금까지 언급되지 않은 몇 가지 사항을 짚어 보겠습니다.
- 대부분의 List 구현(ArrayList, Vector)은 보다 빠른 액세스를 위한 마커 인터페이스인 인터페이스를 구현합니다.어떤 세트 실장도 그렇게 하지 않습니다.
- List는 라고 하는 특수 반복기를 사용합니다.
ListIterator
양방향 반복을 지원합니다.집합은 단방향 반복만 지원하는 반복기를 사용합니다. - HashSet은 동일한 수의 요소를 저장하기 위해 ArrayList보다 5.5배 많은 메모리를 사용합니다.
여기 그루비의 명확한 예가 있다. 나는 세트와 목록을 만든다.그리고 각 목록 안에 무작위로 생성된 20개의 값을 저장하려고 합니다.생성되는 값의 범위는 0 ~5 입니다
s = [] as Set
l = []
max = 5
print "random Numbers :"
20.times{
e = (int)Math.random()*max
s << e
l << e
print "$e, "
}
println "\n"
println "Set : $s "
println "list : $l
결과는 다음과 같습니다.
난수:4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3
설정:[4, 1, 0, 2, 3]
리스트:[4, 1, 4, 0, 1, 2, 4, 0, 0, 3, 4, 3, 2, 0, 4, 0, 1, 3, 1, 3]
그 차이는 다음과 같습니다.
- 집합에서 중복 값을 허용하지 않습니다.
- 목록이 중복된 값을 허용합니다.
토픽명:리스트 VS 세트
방금 자바의 가장 중요한 주제인 컬렉션 프레임워크에 대해 설명했습니다.컬렉션에 대한 저의 작은 지식을 여러분과 나누고 싶었습니다.List, Set, Map이 가장 중요한 주제입니다.List and Set부터 시작하겠습니다.
목록과 세트의 차이:
which which 목 、 [ List ] list 、 [ Class 。
AbstractList
를 Set으로 확장하는 입니다.AbstractSet
수집하다리스트 인터페이스는 중복된 값(요소)을 허용하지만 Set 인터페이스는 중복된 값을 허용하지 않습니다.세트에 중복 요소가 있는 경우 이전 값을 대체합니다.
List interface' NULL 'Set interface' NULL 'Set interface' NULL 'Set interface'(세트)에서 Null 값을 사용할 수 있습니다.
NullPointerException
리스트 인터페이스는 삽입 순서를 유지합니다.은 반복기 각 하여 얻은 과 같은 을 의미합니다. 반에 whereas whereas.
Set
에서는 반드시 되는 것은 ,SortedSet
사용하다TreeSet
, , , , 입니다.LinkedHashSet
을 참조)목록 인터페이스에는 자체 메서드가 정의되어 있지만 Set interface에는 자체 메서드가 없기 때문에 Set은 Collection 인터페이스 메서드만 사용합니다.
에는 List 1이라고 하는 있어요
Vector
가 없습니다.Set interface 에는 레거시 클래스가 .★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
listIterator()
할 수 있는 것은 List 내의 를 사용하여 class elements List Class에 수 .「반복자」() 「반복자」를 설정합니다.
또 뭐 추가할 거 있어요?알려주세요.
고마워요.
설정:
중복된 값을 가질 수 없습니다. 순서는 구현에 따라 다릅니다.기본적으로는 순서가 매겨지지 않습니다.색인별로 액세스 할 수 없습니다.
리스트:
중복된 값을 가질 수 있음 기본적으로 정렬됨 색인별로 액세스 권한을 가질 수 있음
언급URL : https://stackoverflow.com/questions/1035008/what-is-the-difference-between-set-and-list
'programing' 카테고리의 다른 글
C - %x 형식 지정자 (0) | 2022.08.15 |
---|---|
v-if에서 원활한 vue 축소 전환 (0) | 2022.08.15 |
Lodash ReferenceError: _는 Vue에서는 정의되어 있지 않습니다.다른 곳에서도 동작합니다. (0) | 2022.08.15 |
pty와 tty는 무슨 뜻입니까? (0) | 2022.08.15 |
Vue 2.0 인스턴스가 vue-router 구성 요소에서 내보내는 이벤트를 수신하지 않음 (0) | 2022.08.15 |