728x90

 

컬렉션 List의 메소드 중에서 매개변수에 넣는 것 파악하고

반환타입도 파악하면서

해당 반환 타입으로 뭘 할 수 있을지 고민하다가

int타입으로 반환되는 indexOf()를 if문과 연결지어 간단한 출력문구 사용

boolean으로 반환되는 isEmpty()나 remove() 등도 if문 조건으로 사용해봄

이외에도 get이나 다른 str이나 다른 타입 반환을 이용해서 ==이나 equals() 같은 걸 이용해서 값 비교해서

찾는 조건 같은걸로 while, for문 같은 것도 사용해봐야겠다

 

/******************************** collection 3rd practice ***************************************/	
public void method03() {
    // 3번째 연습할거는 오버라이딩 해제하면서, equals()와 hashCode() 비교
    ArrayList a = new ArrayList(2); // 제네릭 안써서 노란줄 경고
    ArrayList<Student> al = new ArrayList<Student>(2);
    ArrayList<Student> list = new ArrayList<>(1);

    // vo클래스에 있는 오버라이딩된 toStirng(), equals(), hashCoding() 
    // 전부 주석처리


    // add(E e):boolean
    al.add(new Student("ㄱ",100));
    al.add(new Student("ㄴ",90));
    System.out.println(al);			// [ㄱ(100점), ㄴ(90점)]
    // Object의 toString()를 오버라이딩 때문에 주소값이 아닌 객체값이 바로나옴
    // toString() 오버라이딩 안된 경우(오버라이딩 주석처리) 결과값 : [chap12_Collection.A_List.model.vo.Student@6d06d69c, chap12_Collection.A_List.model.vo.Student@7852e922]
    al.add(2, new Student("ㄷ",95));	
    System.out.println(al);	// [chap12_Collection.A_List.model.vo.Student@6d06d69c, chap12_Collection.A_List.model.vo.Student@7852e922, chap12_Collection.A_List.model.vo.Student@4e25154f]
    System.out.println(al); // toString오버라이딩 후 : [ㄱ(100점), ㄴ(90점), ㄷ(95점)]

    // add(int index, E element) 
    list.add(0, new Student("ㄱㄱ",100));
    System.out.println(list);	// [ㄱㄱ(100점)]
    list.add(1, new Student("ㄴㄴ",90));
    list.add(2, new Student("ㄷㄷ",85));
    System.out.println(list);// [ㄱㄱ(100점), ㄴㄴ(90점), ㄷㄷ(85점)]


    // addAll(Collection<? extends E> c) : boolean
    al.addAll(al);
    System.out.println(al);// [ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점)]

    // addAll(int index, Collection c) : boolean
    al.addAll(1,al);
    System.out.println(al); // [ㄱ(100점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점)]
    // toString() 오버라이딩 주석 후 : [chap12_Collection.A_List.model.vo.Student@6d06d69c, chap12_Collection.A_List.model.vo.Student@6d06d69c, chap12_Collection.A_List.model.vo.Student@7852e922, chap12_Collection.A_List.model.vo.Student@4e25154f, chap12_Collection.A_List.model.vo.Student@6d06d69c, chap12_Collection.A_List.model.vo.Student@7852e922, chap12_Collection.A_List.model.vo.Student@4e25154f, chap12_Collection.A_List.model.vo.Student@7852e922, chap12_Collection.A_List.model.vo.Student@4e25154f, chap12_Collection.A_List.model.vo.Student@6d06d69c, chap12_Collection.A_List.model.vo.Student@7852e922, chap12_Collection.A_List.model.vo.Student@4e25154f]



    // 장점1. 크기 제약 x
    // .size() : 인덱스 길이 반환
    System.out.println(al.size()); // 12


    // 장점2. 추가/삭제/정렬 기능처리 간단



    // 삭제
    // remove(int index):E
//		// remove()의 return은 삭제한 값을 돌려준다
//		list.remove(7);
    list.remove(2);
    System.out.println("remove(int index) : "+list); // [ㄱㄱ(100점), ㄴㄴ(90점)]
    System.out.println(list.remove(1)); // ㄴㄴ(90점) <- 대괄호 없고, 지운 객체 반환(pop개념) 
    System.out.println(list); // [ㄱㄱ(100점)]

    Student delList = al.remove(11);
    System.out.println("delList : "+delList);	// delList : ㄷ(95점)
    System.out.println(al);			// [ㄱ(100점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점)]
    Student delList2 = al.remove(10);
    System.out.println(delList2);  // ㄴ(90점)
    System.out.println(al);			// [ㄱ(100점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄴ(90점), ㄷ(95점), ㄱ(100점)]



    // 삭제
    // remove(Object o):boolean
    // 같은 데이터라면 앞에 있는거부터 삭제
    al.remove(new Student("ㄷ",95));
    al.remove(new Student("ㄷ",95));
    System.out.println(al.remove(new Student("ㄷ",95))); // false
    System.out.println(al);			// [ㄱ(100점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점)]
    // equals()가 오버라이딩이 안되어 있어서 값 비교가 아니라 주소값 비교라 삭제 못한 것.
    System.out.println(al.size());


    // 지네릭 추가 : <String> 
    // equals랑 hashCode가 잘 오버라이딩이 되어있기 때문에 삭제 가능
    ArrayList<String> sList = new ArrayList<>(2);

    sList.add(new String("a"));
    sList.add(1, new String("b"));
    System.out.println(sList);		// [a, b]
    // 제네릭<String> 같은 경우, toString()이 오버라이딩 안되어있거나 데이터 리턴이 없어도 객체값을 잘 내보내줌



    // set(int index, E e)
    // 해당 인덱스 번호에 값  교체
    sList.set(1, new String("changed Capital B"));
    System.out.println(sList);  // [a, changed Capital B]
    al.set(0, new Student("a",50));
    System.out.println(al);		// [a(50점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점), ㄴ(90점), ㄷ(95점), ㄱ(100점), ㄴ(90점), ㄷ(95점)]


    // get(int index):E
    // 인덱스번호의 엘리먼트 값을 가져온다
    sList.get(0);
    String str = sList.get(1);
    System.out.println(sList);	// [a, changed Capital B]
    System.out.println(str);	// changed Capital B


    // contains(Object) : boolean
    // indexObject : int 
    System.out.println(al.contains(new Student("a",50))); // false


    // int값 데이터 반환된 걸 if문에 적용
    if(al.contains(new Student("ㄱ",100))){
        System.out.println("포함 & 출력");
    }else {
        System.out.println("미포함. 값이 맞다면 equals()오버라이딩 체크해보세여");
    }	// equals()가 오버라이딩 되어있다면 값을 비교하기 때문에 contains()가 작동하고, 
        // 아닐 경우 값이 같더라도 주소값이 비교되기 때문에 작동x
    al.indexOf(new Student("ㄴ",90));
    System.out.println(al.indexOf(new Student("ㄴ",90)));	// 2
    // 반환된 인덱스번호로 if조건문 줘서 실행하기
    if(al.indexOf(new Student("ㄴ",90)) > 0) {
        al.remove(6);
        System.out.println("indexOf의 번호가 0이상이면 객체값 하나 삭제함");	// indexOf의 번호가 0이상이면 객체값 하나 삭제함
    }else {
        System.out.println("조건 미충족. do nothing");
    }

    System.out.println(sList.get(0));	// a
//		if((sList.get(0)) == "a") {
    if((sList.get(0)).equals("a")) {
        System.out.println("true");	// true
    }else {
        System.out.println("false");
    }

    // 반환된 boolean타입으로 while조건 사용하기
    System.out.println("a : "+sList.contains("a")); // true
    int i = 0;
    while(sList.contains("a")) {
        System.out.print(i+" ");	// 0 1 2 3 4 5 6 7 8 9 
        i++;
        if(i>=10) {
            break;	// while문 무한루프 + break문 사용
        }
    }
//		while(true) {
//			System.out.println("====");
//			i++;
//			if(i>=10) {
//				break;
//			}
//		}

//		while(sList.contains("a")) {
//			if(i>=10) {
//				break;
//			}
//			i += 2;
//			System.out.print(i+ " ");
//		}


    // 지네릭<String>과 일반 참조객체<Student>의 오버라이딩 비교
    //  equals메소드와 해쉬코드가 오버라이딩 되지 않으면 주소값이 달라 없는걸로 나옴. 현재는 오버라이딩된 상태


    // clear():void
    al.clear();
    System.out.println(al);// []
    // isEmpty():boolean
    al.isEmpty();
    System.out.println(al.isEmpty()); // true

    if(al.isEmpty()) {
        al.add(new Student("new",10));
        System.out.println(al);  // [new(10점)]
    }

}
728x90
반응형
728x90

 

 

 

form태그 안에 여러개의 버튼과 submit이 필요한데

삭제할 때는 정말 지울껀지 확인 메세지까지 던져줘야해서

어떻게 할지 막혀있던 상태

 

삭제 버튼만 type="button"으로 바꿔주고 삭제 메세지가 뜰 수 있게 js함수로 만들어서

밖으로 빼두었다

 

<form id="form" name="form" method="post">
	<div class="listButton">
    	<c:url var="blist" value="adminNoticeList.ad">
			<c:param name="page" value="${ page }"/>
		</c:url>
        <button type="submit" onclick="javascript:form.action='adminNoticeUpdateForm.ad'">수정</button> 
        <button type="button" onclick="ConfirmDelete()">삭제</button> 
        <button type="submit" onclick="javascript:form.action='adminNoticeList.ad'">목록</button> 
 
    </div>
 </form>

 

정말 지울껀지 confirm()을 이용해서 확인절차 거치고

어느 게시판을 삭제할지 해당 게시판 번호를 알아야해서 boardId를 컨트롤러로 보내주고

form태그에 id속성을 줘서 밖에서도 form를 쓸 수 있게 getElementById를 사용해서 submit 시키고

location.href로 url과 동시에 boardId도 같이 보내준다

 (참고로 location.href는 get방식)

<script>
	function ConfirmDelete(){
		var ask = confirm("정말로 삭제하시겠습니까?");
		if(ask){
			var boardId = $('#boardId').val();
			document.getElementById('form').submit();
			location.href='adminNoticeDelete.ad?boardId='+boardId;
		}
	};
</script>
728x90
반응형
728x90

 

1)put(K key, V value):V

 

2)containsKey(Object key):boolean

 

3)containsValue(Object value):boolean

 

4)get(Object key) : v

 

5)keySet():Set<K>

 

6)entrySet():Set<Map.Entry<K,V>>

 

 

 

 

 

// 1.HashMap
		// put(K key, V value):V
		// 반환타입 : value
		HashMap<String,pModelVo03> hm = new HashMap<>();
		hm.put("힘", new pModelVo03("아자아자",1));			
		hm.put("내", new pModelVo03("으샤으샤",2)); 
		hm.put("라", new pModelVo03("으랴차차",3));
		System.out.println(hm.put("힘", new pModelVo03("아자아자",1))); // 아자아자[1원]
		System.out.println(hm); // 순서x
		System.out.println(hm); // {내=으샤으샤[2원], 힘=아자아자[1원], 라=으랴차차[3원]}
		
		
		// 2.containsKey(Object key)
		// 키나 값이 들어가 있는지를 확인하는 메소드
		// containsKey(Object key):boolean	
		// containsValue(Object value):boolean	
		
		boolean a = hm.containsKey("힘"); // 키값 확인
		System.out.println(a);
		System.out.println(hm.containsKey("내"));
		
		System.out.println(hm.containsValue(new pModelVo03("아자아자",2))); // 밸류값 확인
		System.out.println(hm.containsValue(new pModelVo03("아자아자",1))); // 새객채 주소값다름
		// 모델 클래스에서 오버라이딩 후 결과창 true
		
		// 3.get()
		// get(Object key) : v
		// key값에 맞는 'value값 반환'
		System.out.println(hm.get("힘"));
		System.out.println(hm.get("내"));
		System.out.println(hm.get("라"));
		
		
		// keySet() & entrySet()
		
		// keySet()
		// keySet():Set<K>
		// 맵에 있는 key들을 set에 담아 반환
		System.out.println(hm.keySet()); // [내, 힘, 라]
		
		
		
		// 다른방법
		Set<String> ks = hm.keySet(); // ketSet이 메소드라 제네릭 안붙임
		System.out.println(ks.iterator()); // java.util.HashMap$KeyIterator@6d06d69c
		Iterator<String> it = ks.iterator();
		System.out.println(it); // java.util.HashMap$KeyIterator@7852e922
		while(it.hasNext()) {
			String key = it.next();
			System.out.println("keySet : "+key);
		}
		
		
		
		// entrySet()
		// entrySet():Set<Map.Entry<K,V>>
		// map에 있는 entry들을 set 담에 반환(키와 값의 쌍을 set에 담아 반환)
		// entry 의미 : 키와 값을 묶은 것(키와 값의 쌍)
		System.out.println("=====entrySet=====");
		System.out.println(hm.entrySet()); // [내=으샤으샤[2원], 힘=아자아자[1원], 라=으랴차차[3원]]
		
		// 다른방법
		Set<Entry<String,pModelVo03>> es = hm.entrySet();
		es.iterator();
		Iterator<Entry<String,pModelVo03>> it2 = es.iterator();
		while(it2.hasNext()) {
			Entry<String,pModelVo03> en = it2.next();
			System.out.print(en+" "); // 내=으샤으샤[2원] 힘=아자아자[1원] 라=으랴차차[3원] 
		}
		System.out.println();

 

 

728x90
반응형
728x90

 

 

 

package controller;
import java.util.ArrayList;
import model.vo.pModelVo01;

public class pController01 {

	public void firstR() {
		
//		ArrayList list = new ArrayList();
		ArrayList<pModelVo01> list = new ArrayList<pModelVo01>(3); // 지네릭스 : 데이터타입 한정
		
		System.out.println(list); // 결과값 : []
								  // 리스트 자체가 대괄호 자동생성
		// 1. add(E e):boolean : 추가
		list.add(new pModelVo01("1번", 1));
		list.add(new pModelVo01("2번", 2));
		list.add(new pModelVo01("3번", 3));
		System.out.println(list);
		System.out.println("리스트 길이 : "+list.size());
//		list.add("hi",0);
		
		// 2. add(int index, E elemnet) : 자리 지정 추가
		list.add(0, new pModelVo01("0번",0));
		System.out.println(list);
		System.out.println("리스트 길이 : "+list.size());
		list.add(0, new pModelVo01("===",0));
		System.out.println(list);
		System.out.println(list.size());
		
		// 3.  remove(int index):E : 삭제
		list.remove(0);
		System.out.println(list);
		pModelVo01 a = list.remove(0); // .remove()의 삭제한 반환값  확인용 변수 
		System.out.println(a);
		System.out.println(list);
		System.out.println(list.size());
		
		
		//4 remove(Object o):boolean 
		
		pModelVo01 pm = new pModelVo01("1번",1);
		list.remove(pm);
		System.out.println(list); // 주소값이 다르기에 삭제 안한 것
		
		ArrayList<String> remve = new ArrayList<String>();
		remve.add("ㄱ");
		remve.add("ㄴ");
		remve.add("ㄷ");
		System.out.println(remve); // [ㄱ, ㄴ, ㄷ]
		System.out.println(remve.remove(new String("ㄷ")));
		System.out.println(remve); // [ㄱ, ㄴ]
		
		// set(int index, E e)
		// 해당 인덱스번호의 내용을 교체
		list.set(0, new pModelVo01("2번",2));
		list.set(2, new pModelVo01("2번",2));
		System.out.println(list); // [2번(2점), 2번(2점), 2번(2점)]
		
		// get(int index):E
		list.get(0);
		pModelVo01 tmp = list.get(0);
		System.out.println(tmp); // 2번(2점)
		
		System.out.println("==========================");
		// contains(Object) : boolean
		list.contains(new pModelVo01("2번",2));
		System.out.println(list);
		System.out.println(list.contains(new pModelVo01("2번",2)));
		System.out.println(remve.contains(new String("ㄴ")));
		
		// indexOf: int 
		// 해당 인덱스 번호 반환
		remve.add("ㄷ");		
		remve.add("ㄹ");		
		remve.add("ㅎ");		
		int aa = remve.indexOf(new String("ㅎ"));
		int aaa = list.indexOf(new pModelVo01("2번",2));
		System.out.println(aaa);
		
		// clear():void
		// isEmpty():boolean
		list.clear();
		remve.clear();
		System.out.println(list);
		System.out.println(remve);
		System.out.println(list.isEmpty());
		System.out.println(remve.isEmpty());
		
	}
	
}
728x90
반응형

+ Recent posts