반응형
[광고 누르면 오늘의 행운 상승!!]
리스트
-
순서를 가진 데이터의 집합을 가리키는 추상자료형(abstract data type)
-
동일한 데이터를 가지고 있어도 상관없다.
-
구현방법에 따라 크게 두 가지로 나뉜다.
- 순차 리스트 : 배열을 기반으로 구현된 리스트
- 연결 리스트 : 메모리의 동적 할당을 기반으로 구현된 리스트
-
단순 배열을 이용해 순차리스트를 구현해 사용하는 경우, 자료의 삽입/삭제연산 과정에서
연속적인 메모리 배열을 위해 원소들을 이동시키는 작업이 필요하다 -
원소의 개수가 많고, 삽입/삭제 연산이 빈번하게 일어날수록 작업에 소요되는 시간이 크게 증가한다.
-
배열의 크기가 정해져 있는 경우, 실제로 사용될 메모리보다 크게 할당하여 메모리의 낭비를
초래할 수도 있고, 반대로 할당된 메모리보다 많은 자료를 사용하여 새롭게 배열을 만들어
작업을 해야 하는 경우가 발생할 수도 있다.
구현코드
package ArrayList;
import java.util.*;
class Car implements Comparable<Car>{
String name;
int price;
public Car(String name, int price) {
this.name = name;
this.price = price;
}
public String toString() {
return name + "," +price;
}
@Override
public int compareTo(Car o) {
return -name.compareTo(o.name);
}
}
public class ArrayListTest {
public static void main(String[] args) {
List<Car> list = new ArrayList<Car>();
list.add(new Car("홍길동",1000));
list.add(new Car("홍길동",1000));
list.add(new Car("강호동",9000));
list.add(new Car("사오정",3000));
System.out.println(list);
for(Car t:list)System.out.println(t);
Collections.sort(list);
System.out.println(list);
for(int i=0; i<list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println();
}
}
ArrayList배열
List<String>[] la = new ArrayList<String>[10];
for (int i = 0; i < la.length; i++) {
la[i] = new ArrayList<String>();
}
컴파일 에러 -> Cannot create a generic array of ArrayList<String>
이유 : List<String>[] la = new ArrayList[10]; // <String>을 지워야한다. (문법적인 오류)
제네릭은 객체를 대입할때 붙여줘야 한다. -> la[i] = new ArrayList<String>();
c++은 Person p[] = new Person[3] 으로 생성하면 person객체가 3개 만들어지지만
java는 배열객체만 생성된다. 객체 생성 및 대입하는 문구가 꼭 필요하다(위 코드의 for문)
//자바 개발자 스타일.
반응형
'4. 자료구조 > 1. 선형(Stack, Queue, List)' 카테고리의 다른 글
PriorityQueue (0) | 2020.03.02 |
---|---|
Queue (0) | 2020.03.02 |
Stack (0) | 2020.03.02 |