1. TreeSet
2. TreeMap
1. TreeSet
[정의]
- 이진 검색 트리(binary search tree)라는 자료구조의 형태로 저장하는 컬렉션 클래스이다.
- 이진 검색 트리는 정렬, 검색에 높은 성능을 보이는 자료구조이다.
- TreeSet은 이진 검색트리의 성능을 향상 시킨 '레드-블랙 트리(Red-Black tree)'로 구현 되어있다.
- Set인터페이스를 구현했으므로, 중복된 데이터의 저장을 허용하지 않으며, 정렬된 위치에 저장하므로 저장 순서를 유지하지도 않는다.
[이진 검색 트리(binary search tree)]
- 모든 노드는 최대 2개의 자식노드를 가질 수 있다.
- 왼쪽 자식 노드의 값은 부모노드의 값보다 작고 오른쪽 자식 노드의 값은 부모노드의 값보다 커야한다.
- 노드의 추가/삭제에 시간이 걸린다(순차적으로 저장 안하기 때문이다.)
- 검색과 정렬에 유리하다.
- 중복 값 저장 X
출처: https://coding-factory.tistory.com/555 레드-블랙 트리(Red-Black tree)
[TreeSet 예제]
TreeSet<Integer> set = new TreeSet<Integer>();
set.add(10);
set.add(40);
set.add(20);
set.add(30);
set.add(50);
set.add(10); //Set형태라서 중복값 X
System.out.println(set.size());
//어제도 배웠지만 set은 get메소드가 없다! -> 대신 Iterator제공
Iterator<Integer> iter = set.iterator();
while(iter.hasNext()) {
System.out.print(iter.next());
}
//TreeSet 메소드
System.out.println(set.first()); //최솟값
System.out.println(set.last()); //최댓값
System.out.println(set.headSet(30)); //처음 ~ 30 전까지
System.out.println(set.tailSet(30)); //30 ~ 끝까지
System.out.println(set.subSet(30, 50)); //30 ~ 50 전까지
//OUTPUT
5 //size()
10 20 30 40 50
10
50
[10, 20]
[30, 40, 50]
[30, 40]
----> iterator로 확인 결과 순차정렬이 된걸 알 수 있다.
2. TreeMap
[정의]
- TreeSet과 마찬가지로 이진 검색 트리(binary search tree)구조로 저장하는 컬렉션 클래스이다.
- TreeSet은 값만 저장하지만, TreeMap은 키, 값이 저장된 Map.Entry를 저장한다. 이것이 TreeSet과의 차이점이다.
- TreeMap에 객체를 저장하면 자동으로 정렬되는데, 키는 저장과 동시에 자동 오름차순으로 정렬되고
숫자 타입일 경우에는 값으로, 문자열 타입일 경우에는 유니코드로 정렬합니다.
- 정렬 순서는 기본적으로 부모 키값과 비교해서 키 값이 낮은 것은 왼쪽 자식 노드 키값이 높은 것은 오른쪽 자식 노드 에 Map.Etnry 객체를 저장합니다
[TreeMap 예제]
TreeMap<String, String> map = new TreeMap<String, String>();
map.put("one", "하나");
map.put("two", "둘");
map.put("three", "셋");
map.put("four", "넷");
map.put("five", "다섯");
System.out.println(map.size());
System.out.println(map);
System.out.println(map.get("three"));
System.out.println();
System.out.println(map.firstKey()); //처음 Key값
System.out.println(map.lastKey()); //마지막 Key값
System.out.println(map.firstEntry()); //처음 Entry값
System.out.println(map.lastEntry()); //마지막 Entry값
System.out.println(map.headMap("o")); //알파벳 o부터 시작하는 값부터~
System.out.println(map.tailMap("o")); //위의값 반대
System.out.println(map.subMap("f", "o"));
//OUTPUT
5 //size()
{five=다섯, four=넷, one=하나, three=셋, two=둘}
셋
five
two
five=다섯
two=둘
{five=다섯, four=넷}
{one=하나, three=셋, two=둘}
{five=다섯, four=넷}
MEMO>
# 컬렉션(List, Set, Map)을 오늘로써 전부 다 배웠다. 아직 전부 숙지, 이해는 안되지만 기본적으로 ArrayList와 HashMap, HashSet 이 가장 많이 쓰이는 3가지는 다른 컬렉션보다 무조건 더 깊게 공부하자!!
#JS FRONT
AJAX 배움 !!!!!!!!
AJAX코드짜는 방법 외우고 익히기
주의해야할점:
사이트링크먼저 꼭걸기!
(데이터 받아올 url 과 제이쿼리 링크)
역시 변수선언
done () 괄호 위치 주의주의
AJAX 로 데이터받아와서 화면에 출력하기
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AJAX </title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
</head>
<body>
<!--http://sample.bmaster.kro.kr/-->
<script>
const url='http://sample.bmaster.kro.kr/contacts?pageno=1&pagesize=10'; //데이터받아올 사이트 링크마저 const로 걸어준다 ;;; 지겨운 const
window.onload=function() {
$.ajax(url).done( //데이터 변수선언 총 4번 (변수선언을 잘해야됨 이게 헷갈림!!!주의주의)
function(response){ //response 라는 변수로 데이터를 받아오는 함수 선언 *내가받아오는 데이터 변수이름: response
const contacts = response.contacts; //response안의 연락처(받아올 데이터) 를 임의변수로 저장한다. *내가받아오는 데이터 변수이름: contacts
const $target = $('#target'); //바디안의 아이디 #target 변수 지정 ; 데이터를 표시할 영역을 변수로 지정한다.
for(c of contacts) { //받아올 데이터를 (연락처) 하나씩 돌려서 c라는 변수로 집어넣기 *내가받아오는 데이터 변수이름: c
const str = `<p>이름: ${c.name}, 주소: ${c.address}, 연락처: ${c.tel}</p>`;
//받아올 데이터안에 이름/주소/전화번호 가져와서 p태그로 만들고 str이라는 변수에 저장때림 *내가받아오는 데이터 변수이름: str
$(str).appendTo($target); //아까 저장한 변수를 아까아까 저장한 #target (line:18 참고) 안에 집어넣기
}
}
); //done 괄호 ※done 괄호 주의
}
</script>
<table>
<div id="target">
</div>
</body>
</html>
'인천일보아카데미 > - 학습일지' 카테고리의 다른 글
[학습일지]JAVA교육일지 43일차 (0) | 2022.06.16 |
---|---|
[학습일지]JAVA교육일지 41일차 (0) | 2022.06.15 |
[학습일지]JAVA교육일지 39일차 (0) | 2022.06.15 |
[학습일지]JAVA교육일지 38일차 (0) | 2022.06.15 |
[학습일지]JAVA교육일지 36일차 (0) | 2022.06.14 |