Set 인터페이스
package day0118;
public interface Set {
public void add(int element);
public boolean contains(int element);
public int indexOf(int element);
public void set(int index, int element);
public void removeByIndex(int index);
public void removeByElement(int element);
}
Hash Set 클래스 중복된 값은 없이, 입력된 값을 그대로 출력
package day0118;
public class HashSet implements Set{
public int[] array = {};
// 원본의 배열을 필드로 가지고 있기때문에 메소드의 파라미터와 리턴값에 int[]넣지 않음
@Override
public void add(int element) {
if (!contains(element)){
int[] temp = new int[array.length + 1];
for (int i = 0; i < array.length; i++){
temp[i] = array[i];
}
temp[array.length] = element;
array = temp;
}
}
@Override
public boolean contains(int element) {
return indexOf(element) != -1;
}
@Override
public int indexOf(int element) {
for (int i = 0; i < array.length; i++){
if (array[i] == element){
return i;
}
}
return 0;
}
@Override
public void set(int index, int element) {
array[index] = element;
}
@Override
public void removeByIndex(int index) {
int[] temp = new int[array.length - 1];
for (int i = 0; i < index; i++){
temp[i] = array[i];
}
for (int i = index + 1; i < array.length; i++){
temp[i - 1] = array[i];
}
array = temp;
}
@Override
public void removeByElement(int element) {
if (contains(element)){
removeByIndex(indexOf(element));
}
}
}
Tree Set 클래스 중복된 값이 없이, 정렬된 상태로 출력
package day0118;
public class TreeSet implements Set{
public int[] array = {};
@Override
public void add(int element) {
if (!contains(element)){
int[] temp = new int[array.length + 1];
for (int i = 0; i < array.length; i++){
temp[i] = array[i];
}
temp[array.length] = element;
array = temp;
sort();
}
}
@Override
public boolean contains(int element) {
return indexOf(element) != -1;
}
@Override
public int indexOf(int element) {
for (int i = 0; i < array.length; i++){
if (array[i] == element){
return i;
}
}
return -1;
}
@Override
public void set(int index, int element) {
array[index] = element;
}
@Override
public void removeByIndex(int index) {
int[] temp = new int[array.length - 1];
for (int i = 0; i < index; i++){
temp[i] = array[i];
}
for (int i = index + 1; i < array.length; i++){
temp[i - 1] = array[i];
}
array = temp;
}
@Override
public void removeByElement(int element) {
if (contains(element)){
removeByIndex(indexOf(element));
}
}
public void sort(){
for (int i = 0; i < array.length -1; i++){
if (array[i] > array[i + 1]){
int temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
i = -1;
}
}
}
}
'JX405기_비트 > 자료구조(Data Structure)' 카테고리의 다른 글
| Day08-4 Map (HashMap, TreeMap) (0) | 2023.02.02 |
|---|---|
| Day03-3 Set 정렬 관련 Compartor, Comparable (0) | 2023.02.02 |
| Day08-1 자료구조 이진트리 (0) | 2023.02.02 |