날짜 : 2024-02-24 22:07

태그 : #Algorithm #자료구조 #java


내용

알고리즘에서 자주 사용되는 Java DataStructure

Stack

  • LIFO (Last In, First Out)
  • 중복을 허용
public static void main(String[] args) {  
    Stack<Integer> stack = new Stack<>();  
      
    //요소 삽입  
    stack.push(1);  
    stack.push(2);  
      
    //Stack이 비어있는지 확인  
    if (stack.empty()) System.out.println("Stack is Empty");  
      
    int lastItem = 0;  
      
    //최상단 요소 확인  
    if (stack.peek() == 2)  
        //최상단 요소 제거  
        lastItem = stack.pop();  
      
    //요소 찾기  
    if (stack.search(2) == -1) System.out.println("2 is not Exist");  
}

Map

  • 데이터를 key, value로 관리
  • 탐색 시간복잡도 O(1)
  • key 중복 불가
  • key 순으로 정렬 가능
public static void main(String[] args) {  
    HashMap<String, String> map = new HashMap<>();  
  
    //put item  
    map.put("key1", "value1");  
    map.put("key2", "value2");  
    map.put("key3", "a1");  
  
    //key,value 존재 여부 확인  
    if(map.containsKey("key1") && map.containsValue("value1"))  
        System.out.println("item exist!");  
  
    //key 값을 가져오며, 값이 없을 경우 기본값 설정  
    map.put("key1", map.getOrDefault(("key1"), "emptyValue") + " value changed");  
  
    //key Collection 가져오기  
    List<String> keyList = new ArrayList<>(map.keySet());  
  
    // value 값의 사전순으로 요소 정렬  
    Collections.sort(keyList, new Comparator<String>(){  
        public int compare(String s1, String s2){  
            String v1 = map.get(s1);  
            String v2 = map.get(s2);  
  
            return v1.compareTo(v2);  
        }  
    });  
  
    //map의 크기  
    System.out.println(map.size());  
}

set

  • 데이터들을 중복없이 저장
  • TreeSet은 정렬되어 저장, HashSet은 정렬없이 저장됨
public static void main(String[] args) {  
    //{tom, john}  
    TreeSet<String> treeSet = new TreeSet<>();  
  
    treeSet.add("tom");  
    treeSet.add("tom");  
    treeSet.add("john");  
  
    //{john, tom}  
    HashSet<String> hashSet = new HashSet<>(treeSet);  
  
    // 요소 접근을 위해 Iterator 사용  
    Iterator<String> iterator = hashSet.iterator();  
    while (iterator.hasNext()) {  
        String element = iterator.next();  
        if (element.length() % 2 == 0) {  
            //요소 제거  
            iterator.remove();  
        }  
    }  
}

연결문서

댓글남기기