728x90
1. 제네릭 메소드에 대하여 설명하시오.
제네릭 클래스와 마찬가지로, 메소드에서도 사용이 가능하다. 매개변수 타입과 리턴 타입으로 파라미터를 가지는 메소드이다.
제네릭 메소드의 선언 방법
리턴 타입 앞에 <> 기호를 추가하고 타입 파라미터를 기입한다.
public <타입 파라미터, ~ > 리턴타입 메소드명 ( 매개변수, ~ ) { }
public <T, ~ > Box <T> boxing (T t ~ ) { }
제네릭 메소드의 호출 방법
리턴 타입 변수 = < 구체적 타입 > 메소드명 (매개값);
Box<Integer> box = <Integer> Boxing(100);
리턴타입 변수 = 메소드명(매개값);
Box<Integer> box = boxing(100);
클래스의 메소드만을 부분적으로 제네릭화 할 수 있음.
2. 콜렉션 프레임워크란?
3. ArrayList 와 LinkedList 의 장단점은?
collection
같은 타입의 참조값을 여러개 저장하기 위한 라이브러리
collection framework
컬렉션들을 한 곳에 모아 편리하게 사용할 수 있도록 관리하는 표준화 된 도구
List 인터페이스
배열과 유사하지만, 추가할 때 마다 자동으로 바운더리를 늘려주는 구조로, 중복된 데이터를 허용하며, 순서가 존재한다.
- ArrayList
배열로 구현되며, 빈번한 삽입,삭제 시 새로 배열을 만들고 데이터를 옮기기 때문에 LinkedList에 비해 속도가 느리다.
- LinkedList
링크 구조로 되어 있어서 데이터 조회 자체는 ArrayList에 비해 느리지만, 삽입 혹은 삭제시 링크를 끊고 새로 추가되는 데이터에 링크만 연결하기 때문에 삽입, 삭제에는 유리하다.
- Vector
구현 방식은 ArrayList와 유사하다. 그러나 ArrayList와 달리 동기화 제약이 걸려있어 여러 쓰레드에서 동시 접근이 불가하다.
4. 로또 프로그램을 작성하시오.(Set 으로)
package java_hs;
import java.util.HashSet;
import java.util.Set;
public class java_81 {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>();
while ( set.size() < 6 ) {
set.add((int)(Math.random()*45)+1);
}
System.out.println(set);
}
}
5. Scanner 클래스로 -1이 입력될 때까지 양의 정수를 입력 받아 저장하고 검색하여 가장 큰 수를 출력하는 프로그램을 작성하라.
정수(-1이 입력될 때까지)
-스캐너로 입력된 정수는 List로 관리 할것.
입력:
>> 10 6 22 6 88 77 -1
출력:
가장 큰 수는 88
package java_hs;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;
public class java_82 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println(" -1이 아닌 정수를 입력하시오.");
// 정수 입력받는 부분
List<Integer> list = new LinkedList<>();
// List<Integer> list 선언. ( 중복이 제거되는 함수배열 )
int num = 0;
while ( num != -1 ) {
num = sc.nextInt();
list.add(num);
}
sc.close();
int max = 0;
for ( int i = 0; i < list.size(); i++) {
if( list.get(i) > max ) {
max = list.get(i);
}
}
System.out.println(max);
}
}
6.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
package java_scarrlist;
import java.util.ArrayList;
import java.util.Scanner;
class Grade {
private ArrayList<String> grade;
public Grade() {
grade = new ArrayList<String>();
}
public void inputGrade() {
Scanner sc = new Scanner(System.in);
System.out.println("A A A A A A 형식으로 입력하시오");
while(grade.size() < 6) {
grade.add(sc.next());
}
}
public double getAvg() {
double avg;
double sum = 0;
for ( String e : grade ) {
switch(e) {
case "A" :
sum += 4.0;
break;
case "B" :
sum += 3.0;
break;
case "C" :
sum += 2.0;
break;
case "D" :
sum += 1.0;
break;
}
}
avg = sum / 6;
return avg;
}
}
public class programing {
public static void main(String[] args) {
Grade hamGrade = new Grade();
hamGrade.inputGrade();
System.out.println(hamGrade.getAvg());
}
}
728x90
'SpringBoot > Java' 카테고리의 다른 글
22.11.17 Java 백준 1110번 더하기 사이클 (0) | 2022.11.17 |
---|---|
22.11.09 Java (0) | 2022.11.10 |
22.04.25 족보 13일차 (0) | 2022.04.26 |
22.04.22 족보 12일차 (0) | 2022.04.22 |
22.04.21 족보 11일차 (0) | 2022.04.22 |