데이터의 크기를 동적으로 조정할 수 있는 데이터 구조
ArrayList, HashSet, HashMap, LinkedList
ArrayList Method
.add( element ) → 원소 추가
.add(index, element) → 해당 위치에 원소 추가, (other ele shift)
.get(index) → 해당 위치에 해당하는 원소 얻음
.set(index, element) → 해당 위치에 해당하는 원소 변경
.remove(index) → 해당 위치의 원소 삭제, (other ele shift)
.remove( element ) → 제일 처음 나온 원소 삭제, (other ele shift)
.clear() → 모든 원소 삭제
.size() → 리스트에 있는 원소 개수 반환
.contains( element ) → boolean으로 원소 있는 지 없는지 확인
.indexOf( element ) → 처음 나타나는 ele의 인덱스 리턴
.isEmpty() → 빈 건지 아닌지 확인 (비었을 때 true)
예시 코드
import java.util.ArrayList; //import 해주고
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<String> fruits = new ArrayList<>();
//*<자료형>*
ArrayList<String> lst = new ArrayList<>(20);//크기가 20
fruits.add("Apple"); //add를 사용하여 추가
fruits.add("Banana");
fruits.add("Orange");
fruits.set(1, "HI"); //"Banana"->"HI"로 바뀜
System.out.println(fruits); // 출력: [Apple, Banana, Orange]
for(int i=0;i<3;i++)
System.out.println(fruits.get(i)); //.get으로 값 얻어와
for(String e : fruit){
System.out.println(e);}
}
}
코드 예시
import java.util.HashSet;
public class HashSetExample {
public static void main(String[] args) {
HashSet<String> colors = new HashSet<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");
colors.add("Red"); // 중복된 원소는 추가되지 않음
//무시됨
//.contains("Blue")로 해당 원소가 있는지 확인 가능
System.out.println(colors); // 출력: [Red, Green, Blue]
for(Object obj : color.toArray()){
String num = (String) obj
System.out.println(num);
//Integer 객체면 num.intValue 해줘야 int 값 출력됨
}
}
}
키-값 쌍으로 이루어진 데이터의 집합
순서가 없음
해시 함수를 사용하므로, 빠른 데이터 검색이 가능
Map 인터페이스에 있는 메서드
.put( key, val ) → 추가
.get( key ) → 얻음
.clear() → 다 삭제
.remove( key ) → key에 맞는 val 삭제
.containsKey( key ) → 해당 key가 존재하면 true 리턴
.containsValue( value ) → 해당 val이 존재하면 true 리턴
.isEmpty()
.size()
.KeySet() → 모든 키가 포함된 set 리턴
.values() → 모든 val을 collection으로 리턴
코드 예시
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
HashMap<String, Integer> ages = new HashMap<>();
ages.put("John", 25);
ages.put("Emily", 30);
ages.put("Michael", 35);
System.out.println(ages.get("John")); // 출력: 25
for(String name : ages.KeySet()){
Integer age = ages.get(name); //오브젝트 타입으로 해야
System.out.println(name+" : "+ age.intValue);
}
ages.remove("Jon");//("John", 25) 삭제됨
}
}
노드로 연결된 리스트 구조
순서가 중요
중복 원소 허용
Interator
→ linked list의 collection
Interator Interface
.hasNext → 다음 노드가 있으면 true
.next → 다음 element 리턴
.remove() → 가장 최근의 노드 삭제?
코드 예시
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<String> names = new LinkedList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
System.out.println(names.get(1)); // 출력: Bob
//Interator로 접근하기
Interator<String> listName = names.listInterator();
while(listName.hasNext){
System.out.println(listName.next());
}
}
}
Iterator(반복자)
컬렉션(Collection) 객체의 요소를 순회하면서 접근하기 위한 인터페이스
hasNext(): 다음 요소가 존재하는지 여부를 확인. 만약 다음 요소가 있을 경우 true를 반환하고, 없을 경우 false를 반환.next(): 다음 요소를 반환. hasNext() 메소드를 호출하여 다음 요소가 있는지 확인한 후에 호출.remove(): 현재 요소를 삭제. 이 메소드는 선택적인 기능으로, 모든 컬렉션에서 지원되지 않을 수 있음.ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Orange");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}