교육 10일차

권재현·2021년 3월 27일
0

교육

목록 보기
8/49

1.List: 목록형 데이터 관리(인터페이스)

  • ArrayList (Class) : 데이터 관리를 배열의 형태로
  • LinkedList (Class) : 데이터 관리를 객체링크 형태로

※효율은 ArrayList가 LinkedList 보다 좋다.

리스트는 세로로 생성. 그림 참조

List 객체생성 예시

List<Integer> list = new ArrayList<Integer>();

List <클래스명> list = new ArrayList <클래스명> ();

<클래스명> <= 제네릭 : 형태 고정,해당데이터 객체의 관리형태에 따라 개수지정

제넥릭은 클래스만 읽을 수 있다.

2개인 경우 - <클래스명, 클래스명>

  • 2차배열로 형태로 생각

사용예시

public class TestController2 {
//웹 개발시 리스트를 많이 사용 
public static void main(String[] args) {
	List<Integer> list = new ArrayList<Integer>();
		
	//add(값) : 리스트에 값을 추가한다.
	list.add(1);
	list.add(2);

	//get(인덱스 번호) : 리스트에서 해당 값을 가져온다.
	System.out.println("해당 값 :"+list.get(0));
    
	//size() : 리스트의 크기를 돌려준다.
	System.out.println("크기 :"+list.size());
		
     //set (인덱스 번호, 값) : 인덱스 번호에 해당하는 내용을 주어진 값을 변경한다.
	list.set(0, 7);
	System.out.println(list.get(0));
        
	//remove(인덱스 번호) : 인덱스번호에 해당하는 것을 제거한다. 
        //인덱스 번호 이후에 것들을 당겨온다.
	list.remove(0);
	System.out.println(list.get(0));
		
      //clear(): 리스트를 비운다.
	list.clear();
	System.out.println("크기 :"+list.size());
	list.add(3);
	list.add(7);
	//contains(값) : 값이 리스트에 존재하는 지 여부를 돌려줌. 
    			//boolean타입을 돌려줌
	System.out.println(list.contains(3));
        
	// isEmpty() : 리스트가 비어있는 여부를 돌려줌. 
   	 // 비어있으면 true 안비어있으면 false
	System.out.println(list.isEmpty());

오름차순 문제풀이

	list.clear();
	list.add(5);
	list.add(7);
	list.add(3);
	int temp = 0;
//	여기에 오름차순 정렬을 구현하시오.
	for(int i = 0; i<list.size()-1; i++) { //i는 0부터 1까지
		for(int j=i+1; j<list.size(); j++) { //j는 1부터 2까지
			if(list.get(i)>list.get(j)) {
				temp=list.get(i);
				list.set(i,list.get(j));
				list.set(j, temp);
				}
			}
		}
		//출력 : 3 5 7이 한줄 씩 출력 됨
		for(int i = 0; i< list.size(); i++) {
			System.out.println(list.get(i));
		}
        
//toArray 방법
		list.clear();
		list.add(5);
		list.add(7);
		list.add(3);
		
		
		list.sort(null);
		
	for(int i = 0; i< list.size(); i++) {
		System.out.println(list.get(i));
			}
		// toArray 정리 필요
		Object[] arr = list.toArray(); 
	//toArray는 그냥 오브젝트 타입으로 배열을 생성해줌
	// arr는 오브젝트이지만 제네릭이 Integer타입이라 integer 타입이다. 
		System.out.println(Arrays.toString(arr));
		
		System.out.println(Integer.toString((int)arr[0])+10);
	
    //뒤에서 부터 하는 방법
	
    		list.clear();
		list.add(5);
		list.add(7);
		list.add(3);
		list.add(10);
        
for(int i= 0; i < list.size() -1; i++) { //  0부터 1
	for(int j = list.size() -1; j> i; j--) {// 2부터 1
		if(list.get(i) > list.get(j)) {
			list.add(list.get(i));
			list.remove(i);
			
			}
		}
	}
	for(int i = 0; i< list.size(); i++) {
		System.out.println(list.get(i));
		

2.Map : 키, 값 중심의 데이터 관리 (인터페이스)

  • HashMap (클래스) : 형태는 2차 배열 그림!! 그림 참조

Map 객체생성 예시

  • HashMap <클래스명, 클래스명> map =
    new HashMap<클래스명, 클래스명>( );
HashMap<String, String> map = new HashMap<String, String>();
// put(값1 ,값2 ) : 값1을 키로 지정하고 해당 내용으로 값2를 지정한다.
	map.put("가", "abc");
//get(값) : 값이 키와 동일한 것의 내용을 가져온다.
	System.out.println(map.get("가"));
	System.out.println(map.get("나")); 
//map은 비순차적 개념이 라서 값이 없으면 없다고 알려준다.
	
//replace(값1, 값2 ) : 값 1이 키로 있는 해당내용을 값2를 지정한다. 
//추가시켜주는 기능 없음.
	map.replace("나", "ABC");
	System.out.println(map.get("나"));
    
//put은 추가의 개념과 덮어씌운다는 의미도 있음.
//replace와 동일한 기능 put을 써라
	map.put("가", "abc");
	System.out.println(map.get("가"));

//remove(값) : 값이 키인 것을 제거한다.
	map.remove("가");
	System.out.println(map.get("가"));

//isEmpty() : 맵이 비어있는 지 여부를 돌려줌 boolean타입으로 알려준다.
	System.out.println(map.isEmpty());

// containsKey(값) : 값과 일치하는 키가 있는 지 여부를 돌려줌.
// containsValue(값) : 값과 일치하는 내용이 있는 지 여부를 돌려줌.
	System.out.println(map.containsKey("가"));
	System.out.println(map.containsValue("abc"));

//clear() : 맴에 있는 내용들을 제거.
		map.clear();
		map.put("가", "abc");
		map.put("나", "123");
		map.put("다", "가나다"); 
//출력은 순차적으로 가 아닌 그냥 가깝게 놓은 것 부터 출력

	//KeySet() : 맵의 키들을 Set의 형태로 변환한다.
	//Set : 값을 순차적으로 넣을 수 있다. 넣을 수만 있다.
	Set<String> keySet = map.keySet();
		
//Iterator : 값을 순차적으로 꺼낼 수 있다. 꺼낼 수만 있다.
	//무조건 순차적으로만 꺼낸다.
	// 레코드판과 동일
	Iterator<String> keys = keySet.iterator();

//hasNext(): 다음 값이 존재하는 지 여부를 돌려줌
	while(keys.hasNext()) {
	//next(): 다음 값을 가져온다.
	System.out.println(map.get(keys.next()));
		}

3. 컬렉션객체

크기순차적입력출력제한사항
배열(Array)무제한OOO생성 시 크기 지정
리스트(List)무제한OOOx
맵(Map)무제한xOOx
셋(Set)무제한OOxx
이터레이터(Iterator)고정OxO생성 시 데이터 들어감, 진행 중일 경우 이전값 취득불가 (직진남)

4.for문안에 객체넣는이유

  • 객체가 생성 될때마다 새로운 객체 주소를 받기 위해 for문 안에 있다.

5.두번 째 for문 활용법

  • for( 타입 변수명 : 순차형데이터) {

    ​ 내용

    }

  • 순차형 데이터 가능 한 것 : 배열, 리스트

  • 순서설명:

    1.데이터를 순차적으로 꺼내온다.

    2.꺼낸 데이터를 변수에 넣는다.

  1. 변수에 넣는다.

  2. 내용을 실행한다.

  3. 데이터가 없을 때 까지 반복

※주의사항 : 타입은 데이터에 저장된 형태와 동일해야 한다.

List<HashMap<String, String>> board 
	= new ArrayList<HashMap<String, String>>();
		
for(int i = 10; i > 0 ; i--) {
	HashMap<String, String> data = new HashMap<String, String> ();
	//new가 생성 될때마다 새로운 객체 주소를 받기 위해 for문 안에 있다.
		data.put("no", Integer.toString(i));
		data.put("title", "Test"+i);
		data.put("writer", "Tester");

		board.add(data);
		}
		//순차형 데이터 board 
	for(HashMap<String, String> data : board) {
		System.out.println(data.get("no")+"\t"+data.get("title")
		+"\t"+data.get("writer"));
		}

오늘의 후기

많은 개념을 배워서 주말동안 복습을 하면서 좀 익숙해져야 할 것 같다. 하긴 지금 글쓰는날도 토요일이다. 오늘 열심히 해보자

profile
호텔리어 출신 비전공자

0개의 댓글