public class Timing {
public static void main(String[] args) {
List<Integer> arrayList = new ArrayList<>();
List<Integer> linkedList = new LinkedList<>();
Long duration = timeOperation(linkedList); // 실제 작업시간..
System.out.println(duration);
}
private static Long timeOperation(List<Integer> arrayList) {
long start = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) { //399
arrayList.add(0,i);
}
return System.currentTimeMillis() - start;
}
}
public static void main(String[] args) {
HashSet<String> strings = new HashSet<>();
// set은 인덱스가 없으며, 중복 x, 순서가 없다..
strings.add("무");
strings.add("모");
strings.add("모");
strings.add("마");
strings.add("망가");
strings.add("망각");
strings.add("혼돈");
System.out.println(strings);
System.out.println(strings.contains("망각"));
}
중복 제거 용도, 순서를 보장 하진 않는다.
public static void main(String[] args) {
// 순서 보장
LinkedHashSet<String> strings = new LinkedHashSet<>();
strings.add("무");
strings.add("모");
strings.add("모");
strings.add("마");
strings.add("망가");
strings.add("망각");
strings.add("혼돈");
strings.add("혼돈");
strings.add("강혼돈");
strings.add("무");
System.out.println(strings);
System.out.println(strings.contains("망각"));
}
중복 제거 및 입력 순서에 따른 순서를 보장함.
public static void main(String[] args) {
// 정렬 o
TreeSet<Integer> list = new TreeSet<>();
list.add(3);
list.add(23);
list.add(43);
list.add(13);
System.out.println(list);
TreeSet<String> strings = new TreeSet<>();
strings.add("abc");
strings.add("aaa");
strings.add("aaa");
strings.add("baa");
strings.add("caa");
strings.add("cba");
System.out.println(strings);
TreeSet<Person> people = new TreeSet<>();
people.add(new Person("엄"));
people.add(new Person("엄1"));
people.add(new Person("엄4"));
people.add(new Person("엄3"));
people.add(new Person("엄"));
// 해당 클래스는 implements Comparable<Person>로 인터페이스를 구현하여서 중복을 제거.
System.out.println(people);
}
중복제거 및 객체에 따른 정렬을 해준다.
class Person implements Comparable<Person>{
private String name;
public Person(String name) {
this.name = name;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
@Override
public int compareTo(Person o) {
return name.compareTo(o.name);
}
}
중복이 가능?
Yes : 리스트
- 아이템 입력/삭제가 리스트의 끝이 아니라 중간에 자주?
YES : LinkedList
NO : ArrayList
NO: SET
- 정렬이 필요한가?
YES: TreeSet, LinkedHashSet
NO : HashSet
LIFO (Last In First Out, 후입선출) : 가장 나중에 들어온 것이 가장 먼저 나옴
데이터 넣음 : push()
데이터 최상위 값 뺌 : pop()
비어있는 지 확인 : isEmpty()
꽉차있는 지 확인 : isFull()
FIFO (First In First Out, 선입선출) : 가장 먼저 들어온 것이 가장 먼저 나옴