ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 0. JAVA 기초 (6)
    JAVA Spring 2020. 3. 7. 18:17

    - Collection Framework :  배열, 링크드리스트 등이 구현되어있는 종합 라이브러리 (java.util 패키지에 있음)

    - Generic Programming : Collection Framework에서 채용하는 프로그래밍 기법 ( C++의 Template과 유사)

     

    public class GenericPrinter<T extends Material> { // Material에서 상속받은 애들만 인자로 받겠다.
    	private T material;
    
    	public T getMaterial() {
    		return material;
    	}
    
    	public void setMaterial(T material) {
    		this.material = material;
    	}
    	
    }
    public class GenericPrinterTest {
    	public static void main(String[] args) {
    		GenericPrinter<Powder> PowderPrintrer = new GenericPrinter<Powder>();
    		Powder powder = new Powder();
    		PowderPrintrer.setMaterial(powder);
    	}
    }
    

    - Generic Method : 제네릭 메소드는 매개 타입과 리턴 타입으로 타입 파라미터를 갖는 메소드를 말합니다.

    public <타입 파라미터, ...> 리턴 타입 메소드명(매개변수, ...) { ... }
    
    
    public <T> Box<T> boxing(T t) { ... }

     

    [Link] https://palpit.tistory.com/667

     

    [Java] 제네릭(generic) - 제네릭 메소드

    제네릭은 여러 절로 구성되어 있습니다. Intro 제네릭 타입 멀티 타입 파라미터 제네릭 메소드 제한된 타입 파라미터 & 와일드카드 타입 제네릭 타입의 상속과 구현 제네릭 메소드(<t, r=""> R method(T t)) 제네릭..</t,>

    palpit.tistory.com

    - 앞에 붙은 타입 파라미터 <T>는 Local VAR와 같은 개념으로 생각하면 된다. 

     


     

     

    - Collection Framework :  배열, 링크드리스트 등이 구현되어있는 종합 라이브러리 (java.util 패키지에 있음)

    - Collection Interface와  Map Interface로 구성된다.

     


    List Interface : Collection의 하위 Interface

    ex. ArrayList, Vector, LinkedList

     

    - Vector는 멀티 쓰레드 프로그램에서 동기화를 지원

    - Capacity와 size는 다른 개념. ArrayList에서는 element의 공간이 부족하면 더 큰 공간으로 메모리를 복사한다. (ex. {{1,2}, {4,5,6}})

     

    - LinkedList

     

    package hello;
    
    import java.util.LinkedList;
    
    public class HelloJava {
    
    	public static void main(String[] args) {
    		LinkedList<String> myList = new LinkedList<String>();
    
    		myList.add("A");
    		myList.add("B");
    		myList.add("C");
    
    		System.out.println(myList); // [A, B, C]
    		myList.add(1,"D");
    		System.out.println(myList); // [A, D, B, C]
    		myList.removeLast();
    		System.out.println(myList); // [A, D, B]
    		
    		for(int i=0; i<myList.size(); i++) {
    			System.out.println(myList.get(i));
    		}
    		
    	}
    
    }
    
    

    - HashSet : 기본적으로 Set인데 Hash형태로 저장함.

     

    import java.util.HashSet;
    import java.util.Iterator;
    
    public class HelloJava {
    
    	public static void main(String[] args) {
    		
    		HashSet<String> set = new HashSet<String>();
    		set.add("A");
    		set.add("B");
    		set.add("C");
    		set.add("A");
    		
    		System.out.println(set); // [A, B, C]
    		
    		Iterator<String> ir = set.iterator();
    		while(ir.hasNext()) { // 다음이 있으면  
    			System.out.println(ir.next()); // next()로 가져온다.
    		}
    	
    		
    	}
    
    }
    

    - Iterator() : Collection이면 다 돌아볼 수 있게 하는 METHOD. enhanced for로 구현해도 된다.


    - TreeSet : Set인데 정렬된 형태. Red-Black Tree를 이용한다(O(log n) 의 시간복잡도로 삽입, 삭제, 검색). 보통 Search에서 쓴다. 

     

     

    - 정렬을 위해 Comparable interface를 구현해야 한다. (add()할 때 알아서 compareTo를 참조할 것임)

     

    - Comparable interface

    public class Member implements Comparable<Member> { 
    // Comparable 인터페이스를 받아야, 무엇을 기준으로 정렬할 지 알려줄 수 있다.
    
      @Override
      public int compareTo(Member member) { // 양수이면 오름차순, 음수이면 내림차순
    
      return (this.memberId - member.memberID); // int 기준
      
      // String 기준으로 하려면 String 내의 compareTo로 비교하면 된다.
      return  this.memberName.compareTo(member.getMemberName());
    
      }
    
    }

    - Comparator interface

    public class Member implements Comparator<Member> { 
    // Comparable 인터페이스를 받아야, 무엇을 기준으로 정렬할 지 알려줄 수 있다.
    
      @Override
      public int comapre(Member member1, Member member2) {
    
      return (member1.memberId - member2.memberID);
    
      }
    
    }
    
    
    // 단 선언할 때, 
    treeSet = new TreeSet<Member>(); // 를
    treeSet = new TreeSet<Member>(new Member()); // 으로 바꿔줘야함.
    // Template 방식에서 쓸 때 클래스를 전달해 주어야 한다.
    // 그렇지 않으면 compareTo를 호출한다.
    // 정렬방식을 여러개 쓸 수 있는 것.

    Map Interface

     

    HashMap 

    import java.util.HashMap;
    
    public class MemberHashMap {
    	
    	private HashMap<Integer, Member> hashMap; // <Key, Value>
    	
    	public MemberHAshMAp() {
    		hashMap = new HashMap<Integer, Member>();
    	}
    	
    	public void addMember(Member member) {
    		hashMap.put(member.getMemberId(), member)
    	}
    	
    	public boolean removeMember(int memberId) {
    		if( hashMap.containsKey(memberId)) {
    			hashMap.remove(memverId); // Key로 검색해서 지운다.
    			return true;
    		}
    		return false;
    	}
    	public void showAllMember() {
    		
    		Iterator<Integer> ir_key = hashMap.keySet().iterator(); // key의 iterator
    		Iterator<Integer> ir_value = hashMap.values().iterator(); // values의 iterator (중복 제외)
    		while ( ir_key.hasNext() ) {
    			System.out.println(hashMap.get(ir_key.next()));
    		}
    	}
    	
    }
    	

     

    TreeMap : 위와 동.

     

    'JAVA Spring' 카테고리의 다른 글

    0. JAVA 기초 (8)  (0) 2020.03.07
    0. JAVA 기초 (7)  (0) 2020.03.07
    0. JAVA 기초 (5)  (0) 2020.03.07
    0. JAVA 기초 (4)  (0) 2020.03.06
    0. JAVA 기초 (2)  (0) 2020.03.06
Designed by Tistory.