Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- .xml
- @Valid
- jointpoint
- 어노테이션
- AOP
- @
- springmvc
- 스프링
- 비즈니스레이어
- 생성자주입
- Model
- springjdbc
- @RequestParam
- MVC
- spring
- frontController
- application.properties
- 서비스레이어
- produces
- @ResponseBody
- SpringBoot
- PointCut
- Java
- 의존주입
- c:if
- @RequestMapping
- gradle
- 바인딩변수
- 유효성검사
- after-throwing
Archives
- Today
- Total
메모장
컬렉션 프레임 워크 본문
728x90
반응형
"프레임워크"
컬렉션, Spring, JPA, Mybatis,...
한글로 번역하면 : 틀, 골격, 뼈대....
뼈대 , 틀을 제공하면 "강제성"이 생긴다 -> 좋은거
하라는대로 하면 되니까
ex) 리모컨 : 표준. 통일된 규격 , 기준
=> 제품을 판매할때에는 "규격"
=> 코딩할때에도 코드의 "기준"이 필요하다!
"데이터 묶음" (== 컬렉션 이란 단어)
: 배열
-> 자료형이 같아야함, 크기를 미리 정해놔야함
=> 크기를 미리 정해놓지 않아도 & 자료형이 달라도 저장할수 있는 데이터 묶음 : 배열리스트, 연결리스트, 집합, 맵, 스택, 큐, 트리...
package class01;
import java.util.ArrayList;
public class Test01 {
public static void main(String[] args) {
// 향상된 배열 == 배열리스트 ArrayList
// 객체 지향 언어라서 객체가 사용하는 언어를 많이 쓴다
// 1. 데이터를 마음대로 저장가능 !
// 2. toString() 오버라이딩 되어있다 //예쁘게 출력된다.
// 3.add(), remove(), clear(), size(), get()..과 같은 다양한 기능의 메서드를 기본제공
// 4. 서로 다른 자료형(타입)들도 저장은 가능
// => 그러나, 반드시, 서로 같은 자료형만 취급 해야한다!!
// => 그래서 " 강제성" 을 부여하여 사용한다!!!
// ★ 제네릭 <> : 일반화 라고도 번역이 되는데 ,,, 배열리스트에 저장될 타입을 강제
// ex) <String> , <Integer> ,,, 등등
// 제네릭은 클래스를 사용하기 때문에 wrapper 클래스 로 사용해야한다.
// 값을 감싸는 클래스
ArrayList<Integer> data = new ArrayList<Integer>(); //C + S + O import
data.add(10);
data.add(0, 20); // 인덱스 0번에 20넣기
data.add(0, 30); // 인덱스 0번에 30넣기 // 한칸씩 뒤로 밀림
data.clear();
data.add(10);
System.out.println(data.isEmpty()); // 이거 비어있니? T/F
System.out.println(data); // toString이 오버라이딩 되어 있다
System.out.println(data.get(0));
data.remove(0);
System.out.println(data.size());
// data.add("사과");
data.add(10);
// data.add(3.14);
System.out.println(data);
}
}
package class01;
import java.util.HashSet;
public class Test02 {
public static void main(String[] args) {
// 추상클래스 Set
// Set류의 부모클래스
// Set 은 추상클래스 이기 때문에 new 로 만들수가 없다.
HashSet data = new HashSet(); // 자식인 하위 클래스로 저장하면 된다.
// 집합 (Set)
// 1. 순서가 없음(index XXX)
// 2. 중복 허용하지 않는다 XX ex ) 원카드, 중복 없이 할때 사용됨
// 3. 다양한 자료형 저장 가능
// -> but, 이렇게 사용하지않음!!!
// => 제네릭 <> 함께 사용
data.add(10);
data.add(1234);
data.add(1);
data.add(2);
data.add(13);
data.add(11));
data.add("apple");
System.out.println(data);
System.out.println(data.size());
}
}
< 실습문제 >
1. 10개의 랜덤수를 생성해주세요
(범위는 1~15까지 입니다)
중복을 제외하고 생성된 랜덤수의 개수와 랜덤수를 출력해주세요 !
package class01;
import java.util.HashSet;
import java.util.Random;
public class Test03 {
public static void main(String[] args) {
//랜덤수 생성
Random rand = new Random();
//중복을 제외하고 //HashSet
HashSet<Integer> data = new HashSet<Integer>();
int num =0; //랜덤수
int cnt = 0; //랜덤수의 개수
//10개 생성 (단, 1~15 사이)
for (int i = 0; i < 10; i++) {
num = rand.nextInt(15)+1;
data.add(num); // 컬렉션은 객체라 메서드 활용
cnt ++;
}
System.out.println("랜덤수는 " + cnt + "개 생성되었고,");
System.out.println(data); // 중복을 제외하고 출력
System.out.println("입니다.");
}
}
2. 정수를 입력합니다. 0을 입력하면 종료됩니다. while 무한루프
프로그램이 종료되었을때 , 현재까지 입력한 정수들의 평균을 출력해주세요 !
__.__ 입니다
입력한 정수중에서 짝수가 몇개인지 구해 주세요
package class01;
import java.util.ArrayList;
import java.util.Scanner;
public class Test04 {
public static void main(String[] args) {
//중복 허용
ArrayList<Integer> datas = new ArrayList<Integer>();
// 배열은 갯수가 정해져 있어야 하는데 그게 안되어 있어서 일반 배열은 못쓴다.
// 컬렉션을 써야 겠네? 근데 중복을 허용하지 말라는 말이 없으므로 ? Array
//정수를 입력 (끝날때 까지 한다 while)
//0을 입력하면 종료 //종료조건 break;
Scanner sc = new Scanner(System.in);
int cnt = 0; // 입력 개수
int sum = 0; // 총합 초기화
double avg = 0.0; // 평균 초기화
int num = 0;
while(true){
System.out.println("정수입력) ");
System.out.println("0을 입력하면 종료 됩니다.");
num = sc.nextInt();
if( num == 0) { // 프로그램 종료
break;
}
sum += num;
cnt ++;
}
// 프로그램 종료 후 현재까지 입력한 정수들의 평균 출력
avg = sum * 1.0 / cnt;
System.out.println("평균은 " + avg + "입니다.");
for (int i = 0; i < cnt; i++) { // 짝수를 보기전에 전체를 한번 봐야된다.
datas.add(num); // 내가 저장한 수 들을 보여줘 !
}
if( % 2 == 0 ) {
System.out.println("짝수는 " + cnt + "개 입니다");
System.out.println(datas);
}
}
}
package class01;
import java.util.ArrayList;
import java.util.Scanner;
// 강사님 풀이
public class Test06 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<Integer> data=new ArrayList<Integer>();
while(true) {
System.out.print("입력) ");
int num=sc.nextInt();
if(num==0) { // 0일때 종료
break;
}
data.add(num); // 0이 아니면 데이터에 추가
}
int sum=0; // 합계 초기화
/*
for(int i=0;i<data.size();i++) {
sum+=data.get(i);
}
*/
for(int v:data) {
sum+=v;
}
double avg=sum*1.0/data.size(); //Array배열에 사이즈,크기
System.out.println("평균: "+avg);
// 처음부터 끝까지 돌면서
// data의 모든 요소를 확인할거야~ 배열크기가 자꾸 변화하니까 언제 까지 할지 모른다
// [ a b c ] 요소 b를 삭제
// [ a c ] 삭제한 인덱스부터 재확인!
int index=0; // 인덱스 번호
while(index < data.size()) { // 인덱스번호가 data의 사이즈 만큼 돌때
if(data.get(index)%2 == 1) {//삭제해야하는일이 발생했다면 //홀수일때
data.remove(index); // 삭제한다
continue; // 아래로 가면 안된다.
}
index++;
}
System.out.println(data);
}
}
728x90
반응형
'JAVA > 개념정리' 카테고리의 다른 글
| 스레드(Thread) 와 파일 입출력 (1) | 2024.04.07 |
|---|---|
| 예외 와 예외처리 (0) | 2024.04.07 |
| 객체배열 (1) | 2024.04.06 |
| (접근)제어자 (1) | 2024.04.06 |
| [상속] Object (0) | 2024.04.06 |