▼정답
・ArrayList<E>(조회 많이하면) : 배열 기반 자료구조, 배열을 이용하여 인스턴스 저장
유리한 작업 :
[ArrayList<E>의 단점]
・저장 공간을 늘리는 과정에서 시간이 비교적 많이 소요된다.
・인스턴스의 삭제 과정에서 많은 연산이 필요할 수 있다. 따라서 느릴 수 있다.
[ArrayList<E>의 장점]
・저장된 인스턴스의 참조가 빠르다.
→배열 형식이기에 1004번지를 찾고 싶으면 1000번지에서 1004번지까지 멈추지 않고 찾는다.
・LinkedList<E>(수정 많이하면) : 리스트 기반 자료구조, 리스트를 구성하여 인스턴스 저장(링크 연결)
유리한 작업 : 입력과 삭제가 빈번한 작업 insert(추가), delete(참조끊기)
[LinkedList<E>의 단점]
・저장된 인스턴스의 참조 과정이 배열에 비해 복잡하다. 따라서 느릴 수 있다.
[LinkedList<E>의 장점]
・저장 공간을 늘리는 과정이 간단하다.
・저장된 인스턴스의 삭제 과정이 단순하다.
Scanner 클래스로 -1이 입력될 때까지
양의 정수를 입력 받아 저장(List객체)하고 검색하여
가장 큰 수를 출력하는 프로그램을 작성하라.
▼정답
Scanner 클래스를 사용하여 6개 학점('A', 'B', 'C', 'D', 'F')을 문자로 입력받아 ArrayList에 저장하고, ArrayList를 검색하여 학점을 점수(A=4.0, B=3.0, C=2.0, D=1.0, F=0)로 변환하여 평균을 출력하는 프로그램을 작성하라.
6개의 학점을 빈 칸으로 분리 입력(A/B/C/D/F) >> A C A B F D 2.3333333333333335
A: 4.0
B: 3.0
C: 2.0
D:1.0
F:0.0
▼정답
package CollectionF;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Test2 {
public static void main(String[] args) {
double score = 0;
String input;
List<String> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
System.out.print("학점을 입력하시오 >> ");
input = sc.nextLine();
StringTokenizer st1 = new StringTokenizer(input);
String compare;
while (st1.hasMoreTokens()) { // StringTokenizer에 사용할 수 있는 토큰이 더 있는지 확인
list.add(st1.nextToken());
}
for (Iterator<String> itr = list.iterator(); itr.hasNext();) {
compare = itr.next();
if (compare.equals("A")) {
score += 4.0;
} else if (compare.equals("B")) {
score += 3.0;
} else if (compare.equals("C")) {
score += 2.0;
} else if (compare.equals("D")) {
score += 1.0;
} else if (compare.equals("F")) {
score += 0;
}
}
System.out.println();
System.out.println(score / list.size());
// System.out.println(list.score / list.size());
}
}