- 삭제할 데이터의 아래 있는 데이터를 한 칸씩 위로 복사 → 삭제할 데이터 덮어쓴다.
- 데이터가 한 칸씩 위로 이동했으므로 마지막 데이터 null로 변경
- size 값 1 감소
class Node {
Node next; // 다음 요소의 주소를 저장
Object obj; // 데이터를 저장
}
public interface Collection { // Collection 인터페이스
...
public Iterator iterator(); // Iterator를 구현한 클래스의 인스턴스를 반환
...
}
iterator()
가 각 컬렉션 특징에 맞게 작성되어 있다.List list = **new ArrayLsit()**; // 다른 컬렉션으로 변경할 때 이 부분만 고치면 된다.
Iterator it = list.iteratoir();
while(it.hasNext()) { // boolean hasNext() 읽어올 요소 있는지 확인
System.out.println(it.next()); // Object next() 다음 요소를 읽음
}
keySet()
, entrySet()
과 같은 메서드를 통해 키와 값을 Set 형태로 얻은 후 iterator()
를 호출해야 한다.Map map = new HashMap();
Iterator it = map.entrySet().iterator();
int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length); // arr2 = [0,1,2,3,4]
int[] arr3 = Arrays.copyOf(arr, 3); // arr3 = [0,1,2]
int[] arr4 = Arrays.copyOfRange(arr, 2, 4); // arr4 = [2,3]
int[] arr = new int[5];
Arrays.fill(arr, 9); // arr = [9,9,9,9,9]
Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); // arr=[1,5,2,1,1]
int[] arr = {3, 2, 0, 1, 4};
Arrays.sort(arr); // [0,1,2,3,4]
int idx = Arrays.binarySearch(arr, 2); // idx=2
deepEquals()
deepToString()
List list = new ArrayList(Arrays.asList(1,2,3,4,5));
Comparable
: 기본 정렬기준 구현할 때(오름차순)Comparator
: 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때public interface Comparator {
int compare(Object o1, Object o2); // o1과 o2를 비교
boolean equals(Object obj);
}
public interface Comparable {
int compareTo(Object o); // 객체 자신(this)과 o를 비교
}
compare
, compareTo
LinkedHashSet
equals()
, hashCode()
를 호출 → 기존에 저장된 요소와 같은지 판별하기 위해equals()
, hashCode()
오버라이딩 필요public boolean equals(Object obj) {
if(!(obj instanceof Person) return false;
Person p = (Person)obj;
return name.equals(p.name) && age==p.age;
}
public int hashCode() {
return Objects.hash(name, age);
}
subSet(Object from, Object to)
: 범위 검색(from ~ to) 결과 반환(to는 범위 포함 X)headSet(Object to)
: 지정된 객체보다 작은 값의 객체들 반환tailSet(Object to)
: 지정된 객체보다 큰 값의 객체들 반환[참고] <Java의 정석 - 기초편>