"안녕, 아미고."
"어이, 리시."
"Ellie는 컬렉션의 더 많은 예를 원한다고 말했습니다. 몇 가지를 알려드리겠습니다. 다음은 컬렉션 및 인터페이스 목록입니다."
상호 작용 | 클래스/구현 | 설명 |
---|---|---|
목록 | 배열목록 | 목록 |
LinkedList | 목록 | |
벡터 | 벡터 | |
스택 | 스택 | |
세트 | 해시셋 | 세트 |
트리셋 | 세트 | |
SortedSet | 정렬된 집합 | |
지도 | 해시맵 | 지도/사전 |
트리맵 | 지도/사전 | |
SortedMap | 정렬된 사전 | |
해시 테이블 | 해시 테이블 |
"흠. 꽤 많군. 목록 4개, 세트 3개, 맵 4개."
"예, 그것들은 모두 List, Set 및 Map 인터페이스의 다른 구현입니다."
"이러한 구현의 차이점은 무엇입니까?"
"그게 바로 오늘 우리가 이야기할 내용입니다. 조금만 참으세요."
"다른 질문이 있습니까?"
" 화면에 목록을 표시하는 방법을 알고 있습니다. 세트나 지도는 어떻게 표시합니까?"
"목록의 요소에는 정해진 순서가 있으므로 색인을 사용하여 표시할 수 있습니다. 세트 또는 지도의 경우 특정 순서가 없습니다. 사실 요소의 순서는 항목이 삭제되거나 새 항목으로 변경될 수 있습니다. 항목이 추가됩니다."
"놀라운."
"이것이 컬렉션 요소와 함께 작동하도록 반복자라고 하는 특수 개체가 발명된 이유입니다 . 이를 통해 인덱스(Map) 대신 이름만 있거나 이름도 인덱스도 없는 컬렉션의 모든 요소를 살펴볼 수 있습니다( 세트)."
"여기 몇 가지 예가 있어요:"
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
// Get an iterator for the set
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) // Check if there is another element
{
// Get the current element and move to the next one
String text = iterator.next();
System.out.println(text);
}
}
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Rain");
list.add("In");
list.add("Spain");
Iterator<String> iterator = list.iterator();// Get an iterator for the list
while (iterator.hasNext()) // Check if there is another element
{
// Get the current element and move to the next one
String text = iterator.next();
System.out.println(text);
}
}
public static void main(String[] args)
{
// All elements are stored in pairs
Map<String, String> map = new HashMap<String, String>();
map.put("first", "Rain");
map.put("second", "In");
map.put("third", "Spain");
Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
while (iterator.hasNext())
{
// Get a key-value pair
Map.Entry<String, String> pair = iterator.next();
String key = pair.getKey(); // Key
String value = pair.getValue(); // Value
System.out.println(key + ":" + value);
}
}
"와우. 그게 다 무슨 뜻인지 궁금해."
"실제로는 매우 간단합니다. 먼저 컬렉션에서 특수 개체인 반복자를 가져옵니다. 반복자에는 두 가지 메서드만 있습니다.
1. next() 메서드는 컬렉션의 다음 요소를 반환합니다.
2. hasNext() 메서드는 next()에서 반환되지 않은 요소가 아직 있는지 확인합니다."
"알았어. 이제 좀 더 명확해지고 있는 것 같아. 내가 이해한 걸 다시 말해줄게."
"그래서... 먼저 이 매직 반복자 개체를 가져오려면 컬렉션에서 iterator() 메서드를 호출해야 합니다."
"그런 다음 가져올 요소가 남아 있는 한 요소를 하나씩 가져옵니다. next()를 호출하여 컬렉션의 다음 요소를 가져오고 컬렉션에서 hasNext()를 호출하여 컬렉션에 아직 요소가 있는지 확인합니다. 이터레이터. 맞습니까?"
"예, 다소간. 하지만 좋은 부분을 기다리십시오."
"Java에는 반복자 작업을 위한 속기 표기법이 있습니다. while 및 for 패턴에 따라 for each 라는 특수 문이 하나 더 추가되었습니다 . 또한 for 키워드를 사용하여 표시됩니다 ."
"for-each 문은 컬렉션 및 컨테이너 작업에만 사용됩니다. 암시적으로 반복자를 사용하지만 반환된 요소만 볼 수 있습니다."
"이터레이터로 작업하는 자세한 방법과 속기 방법을 보여 드리겠습니다."
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
System.out.println(text);
}
}
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
for (String text : set)
{
System.out.println(text);
}
}
"빨간색 또는 녹색으로 강조 표시된 단어는 오른쪽 부분에 없습니다. 사실 세 줄이 한 줄로 대체됩니다."
Iterator<String> iterator = set.iterator();
while (iterator.hasNext())
{
String text = iterator.next();
for (String text : set)
"멋져 보여요. 저는 이 방법이 훨씬 좋습니다."
"위 예제의 속기 버전을 살펴보겠습니다."
public static void main(String[] args)
{
Set<String> set = new HashSet<String>();
set.add("Rain");
set.add("In");
set.add("Spain");
for (String text : set)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
List<String> list = new ArrayList<String>();
list.add("Rain");
list.add("In");
list.add("Spain");
for (String text : list)
{
System.out.println(text);
}
}
public static void main(String[] args)
{
Map<String, String> map = new HashMap<String, String>();
map.put("first", "Rain");
map.put("second", "In");
map.put("third", "Spain");
for (Map.Entry<String, String> pair : map.entrySet())
{
String key = pair.getKey(); // Key
String value = pair.getValue(); // Value
System.out.println(key + ":" + value);
}
}
"지금 말하는거야!"
"마음에 드셨다니 다행입니다."
GO TO FULL VERSION