GDJ 8/29

Yongha Hwang·2023년 8월 29일
0

Web & Java

1. Collection Framework

Collection Interface 를 최상위로 하는 자료구조이다 동일한 Interface를 구현받는 클래스들끼리 메서드 사용법이 유사하다.

  • 초기 선언시 크기를 설정하지 않아 유연한 사용이 가능하다(크기가 거의 무한하다)

2. ArrayList

	// ArrayList : 배열과 기본적으로 같다.
	// 크기가 무제한 이다.
	// <> 은 제너릭이라고 하는데, 특정 데이터 타입만 받겠다고 하는 선언이다.
	// 제너릭에 데이터타입은 클래스형 데이터 타입만 가능 하다(int -> integer)
	private  static ArrayList<String> list = new ArrayList<String>(10);
	
	public ArrayList<String> getList(){
		return list;
	}
	public void addList(String todo) {
		// array[0] = todo;
		list.add(todo); // list의 가장 뒤에 들어간다.
		// list.add(0,todo) <- 특정 인덱스에 넣을수도 있지만 이렇게 사용하는 경우는 드물다.
		System.out.println("0 번 인덱스의 값 : "+list.get(0));
		
	}
	public void delList(String idx) {
		//list.remove(index) : 지운값 반환
		//list.remove(value) : 지웠는지 여부 반환
		int index = Integer.parseInt(idx);
		String val = list.remove(index);
		System.out.println(index+" 인덱스의 값 지움 : "+val);
  //배열은 일반 출력문으로 값을 볼수 없지만, Collection Framework는 볼 수 있다.
		System.out.println(list);

3. Vector

Vector 는 List를 구현받는 class로 ArrayList와 사용법이 거의 동일하지만 사용중에 다른이의 접근을 막는다는 차이점이 있다.

//추가
	public void addList(String todo) {
	list.add(todo);
	
	}
	public Vector<String> getList(){
		return list;
	}
	//삭제
	public void delList(int idx) {
		list.remove(idx);
		
	}
	//비우기
	public void clearList() {
		if(list.isEmpty()==false) {// 비워져 있지 않으면...
		list.clear(); // 비운다.
		}
	}
	
	//수정
	public void setList(int idx, String val) {
		list.set(idx, val); // idx 인덱스에 값을 val로 덮어써라
		

4.Generic

<> 은 제너릭이라고 하는데, 특정 데이터 타입만 받겠다고 하는 선언이다.

  • 여러 타입을 지정 할 수 있다.
  • 객체화 할 때마다 유연하게 클래스 내 데이터 타입을 지정 할 수 있다.
public class GBox<T> { //아직 지정되지 않은 타입
public class MBox<N,A,G>{//여러개도 가능하다
//빈 규약 : 데이터를 담는 자바파일(클래스)은 private 으로 필드를 지정해야 한다.
	
	// T 의 타입이 지정되면 필드들의 타입도 자동으로 지정되게 된다
    // 제너릭 안의 임시 타입의 문자는 아무렇게나 지정할 수 있다.

5.LinkedList

6. Set

  • HashSet
// 다형성 : 상속받은 클래스가 부모 클래스 형태로 들어가는 것
// 다형성2: 구현받은 클래스가 해당 인터페이스 형태로 들어가는 것
	static Set<String> set = new HashSet<String>();
//static 을 사용하지 않으면 매번 객체화시 새로운 복사본을 가져오기때문에 초기화 된다.	
	/*Set 역시도 List 와 함께 Collection Interface 를 구현받고 있어
	 * 사용하는 메서드가 같다.
	 * add() : 추가 , remove() : 삭제, size() : 크기확인, clear() : 로 비울 수 있다.
	 * 하지만 순서가 없는 Set 특성상 get(index) 을 사용 할 수 없다.
	 */
	
	public List<String> addData(String val) {
		List<String> list = new ArrayList<String>();
		// 데이터 추가
		set.add(val); 
		//set 은 중복데이터가 들어오면 덮어쓰는 것이 아니라 받지 않는다. 
		System.out.println("set 안의 데이터 갯수 : "+set.size());
		
		// 데이터 꺼내기
		// 1. Set 을 하나씩 꺼낼수 있도록 쪼개기
		Iterator<String> iter =set.iterator();
		// 2. 꺼낼 값이 있으면 하나씩 꺼내기
		while(iter.hasNext()) {
			list.add(iter.next());
		}
		return list;
	}
	
static Set<Member> members = new HashSet<Member>();
// class도 사용 가능 하다.	
	public List<Integer> addInstance() {
		
		// 데이터 넣기
		members.add(new Member());
		System.out.println(members.size());
		/*데이터 출력
		Iterator<Member> iter = members.iterator();
		while(iter.hasNext()) {
			System.out.println(iter.next());
		}*/
		List<Integer> list = new ArrayList<Integer>();
		for (Member member : members) {
			// hashcode : 객체의 일련번호만 확인
			//System.out.println(members.hashCode());
			list.add(member.hashCode());
		}
// 1. List 에 일련번호를 넣는다.
// 2. Controller 로 반환 한다.
// 3. Controller -> view 로 전송 한다.
// 4. view 에서 해당 내용을 출력 한다.
		return list;
// 1개의 파일에 1개 이상의 클래스를 만들 수 있다.
// 1개 파일에 1개의 클래스 권장.
// 다만 public 접근제한자는 1개의 클래스만 가질 수 있다.
class Member{
	
}

7.Map

set 과의 중복 차이점은 받지 않는 것이 아니라 덮어 씌운다.

public class ScoreModel {
	
	// 제너릭에 키와 값에 대한 데이터 타입을 넣을 수 있다.
	static Map<String, Integer> map = new HashMap<String, Integer>();

	public void insert(String key, int value) {
		// 데이터 추가
		map.put(key, value);// 키에 대한 중복을 허용하지 않음(덮어 쓴다)
		// 사이즈 확인
		System.out.println(map.size());
	}
	
	public Map<String, Integer> list() {
		/* map 에서 데이터를 출력하는 방법 1.- 키만 Set 으로 가져와 key 를 따로 추출해 값을 찾는 방식
		Set<String> keys = map.keySet();
		Iterator<String> iter = keys.iterator();
		while(iter.hasNext()) {
			String key = iter.next();
			int  val = map.get(key);
			System.out.println("key :"+key+"/ val :"+val);
		}*/
		
		/*map 에서 데이터를 출력하는 방법 2. - 향상된 for 활용 (1번을 좀 더 쉽게)
		Set<String> keys = map.keySet();
		for (String key : keys) {
			System.out.println(key+":"+map.get(key));
		}
		*/
		/* map 에서 데이터를 출력하는 방법 3. - 키:값 을 한쌍으로 Set으로 가져와 각각 추출하는 방식
		Set<Entry<String, Integer>> entrySet =map.entrySet();
		Iterator<Entry<String, Integer>> iter = entrySet.iterator();
		while(iter.hasNext()) {
			Entry<String, Integer> entry = iter.next();
			System.out.println(entry.getKey()+":"+entry.getValue());
		*/
		// jstl 으로 해결하는 법
		return map;
	}

	public void remove(String key) {
		if(map.get(key) !=null) {
			map.remove(key);
		}
		//map.replace(key,value) : 수정 하는 메서드
		//map.clear() : map 을 비우는 메서드
	}
}

0개의 댓글

관련 채용 정보