날짜 : 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();
}
}
}
연결문서
댓글남기기