Web Developer/JAVA II

8. List 연습문제 - 리스트 초기화, 추가/수정/삭제 / 반복문으로 리스트 접근 / 리스트가 제공하는 함수 사용

sayitditto 2023. 1. 22. 13:23

I. 리스트 초기화, 추가/수정/삭제

1. List 만들기

주어진 값 넣고 출력하기 (3가지 방법)

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Quiz01 {

	public static void main(String[] args) {

		List<Integer> list1 = new ArrayList<>();
		list1.add(3);
		list1.add(8);
		list1.add(9);
		list1.add(4);
		list1.add(2);
		list1.add(1);
		list1.add(7);
		list1.add(5);
		System.out.println(list1);

asList로 하면 수정이나 삭제 불가 

		List<Integer> list = Arrays.asList(3, 8, 9, 4, 2, 1, 7, 5); // aslist는 한번 만들면 수정/추가/삭제 불가..
		System.out.println(list);

가장 간편한 방법!

		List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 8, 9, 4, 2, 1, 7, 5));
		System.out.println(list2);

 

2. 값 수정하기 -  List의 네번째 값을 6으로 바꾸고 전체 출력

List<Integer> list2 = new ArrayList<>(Arrays.asList(3, 8, 9, 4, 2, 1, 7, 5));
		System.out.println(list2);
        
        System.out.println(list2.set(3, 6));
		System.out.println(list2);

 

3. 값 삭제하기 - List에서 8과 7을 삭제하고 전체 출력 (두가지 방법)

index로 삭제

		list1.remove(1);
		list1.remove(5);
		System.out.println(list1);

값으로 삭제 

		Integer value = 8;
		Integer value1 = 7;
		list1.remove(value);
		list1.remove(value1);
		System.out.println(list1);

 

II. 반복문으로 리스트 접근하기

1. List 만들기

public static void main(String[] args) {
		
	List<Integer> numbers = new ArrayList<>(Arrays.asList(20, 3, 5, 84, 17));
	System.out.println(numbers);
}

2. 최소값 구하기 (for문 사용) 

int min = numbers.get(0);	
	for (int i = 1; i < numbers.size(); i++) {
		if (numbers.get(i) < min) {
			min = numbers.get(i);
			i++;
		}
	}
System.out.println(min);

3. 합계 구하기 (Iterator 사용)

Iterator<Integer> iter = numbers.iterator();
int sum = 0;
	while (iter.hasNext()) {
		sum += iter.next(); 
	}
	System.out.println(sum);

III. 리스트가 제공하는 함수 사용하기

1. 체조 경기 평균 점수 (for 문) - 최고점과 최저점을 제외한 나머지 점수의 평균

public static void main(String[] args) {
	
	List<Integer> numbers = new ArrayList<>(Arrays.asList(8, 7, 6, 10, 9, 4));
		
	numbers.sort(Comparator.naturalOrder());
	numbers.remove(0);
	numbers.remove(numbers.size()-1);

	int sum = 0;
	for (int i = 0; i < numbers.size(); i++) {
		sum += numbers.get(i);
	}
	
	double average = sum / (double) numbers.size();
	System.out.println("최고점과 최저점을 제외한 평균 점수는 " + average);

2. 회원 추가하기 (3가지 방법)

방법 1 ( 더 효율적임) 

List<String> names = new ArrayList<>(Arrays.asList("우솝", "루피", "상디", "나미", "로빈"));
List<String> newNames = new ArrayList<>(Arrays.asList("보람", "루피", "쵸파", "로빈", "루피"));
List<String> resultList = new ArrayList<>();
resultList.addAll(names);
	
for (int i = 0; i < names.size(); i++) { // 기존 회원 (기준이 됌) 
	int count = 0; // 이름 옆에 붙는 숫자 
	for (int j = 0; j < newNames.size(); j++ ) { // 새회원 (비교 대상) 
		if (names.get(i).equals(newNames.get(j))) {
			count++;
			newNames.set(j, newNames.get(j) + count);
		}
	}
}
resultList.addAll(newNames);
System.out.println(resultList);

방법 2

List<String> names = new ArrayList<>(Arrays.asList("우솝", "루피", "상디", "나미", "로빈"));
List<String> newNames = new ArrayList<>(Arrays.asList("보람", "루피", "쵸파", "로빈", "루피"));
List<String> resultList = new ArrayList<>();
resultList.addAll(names);

int count = 1;
	for (int i = 0; i < newNames.size(); i++) { //	새 회원 기준 
		if (names.contains(newNames.get(i) )) { // 참 = 있는경우 
			String name = newNames.get(i) + count; 
			if (names.contains(name)) {
				i--;	 // 이름 + 번호 다시 검사하기 위해 같은 이름으로 반복문을 또 돌린다.
				count++; 
				continue;
			}
			names.add(name);
			count = 1;
		} else { // 없을 경우
			names.add(newNames.get(i)); 
		}
	}
System.out.println(names);

방법 3

List<String> names = new ArrayList<>(Arrays.asList("우솝", "루피", "상디", "나미", "로빈"));
List<String> newNames = new ArrayList<>(Arrays.asList("보람", "루피", "쵸파", "로빈", "루피"));
List<String> resultList = new ArrayList<>();
resultList.addAll(names);

for (int i = 0; i < newNames.size(); i++) {
	String newName = newNames.get(i);
	int count = 1;
	while (names.contains(newName)) {
		newName = newNames.get(i) + count;
		count++;
	}
	names.add(newName);
}	System.out.println(names);

 

'Web Developer > JAVA II' 카테고리의 다른 글

10. Map 예제  (1) 2023.01.22
9. Set 예제 - 사용법  (0) 2023.01.22
8. List 예제  (0) 2023.01.22
7. Wrapper Class 예제  (0) 2023.01.22
6. Interface 연습문제  (0) 2023.01.15