public class HashSetMethod {
public static void main(String[] args) {
Set<String> hSet1 = new HashSet<>();
hSet1.add("가");
hSet1.add("나");
hSet1.add("가");
System.out.println(hSet1.toString());
Set<String> hSet2 = new HashSet<>();
hSet2.add("나");
hSet2.add("다");
hSet2.addAll(hSet1);
System.out.println(hSet2);
hSet2.remove("나");
System.out.println(hSet2);
hSet2.clear();
System.out.println(hSet2.toString());
System.out.println(hSet2.isEmpty());
Set<String> hSet3 = new HashSet<>();
hSet3.add("가");
hSet3.add("나");
hSet3.add("다");
System.out.println(hSet3.contains("나"));
System.out.println(hSet3.contains("다"));
System.out.println(hSet3.size());
Iterator<String> iterator = hSet3.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
Object[] objArray = hSet3.toArray();
System.out.println(Arrays.toString(objArray));
String[] strArray = hSet3.toArray(new String[0]);// [가 나 다]
System.out.println(Arrays.toString(strArray));
String[] strArray2 = hSet3.toArray(new String[5]);// [가 나 다 null null]
System.out.println(Arrays.toString(strArray2));
}
}
class A {
int data;
public A(int data) {
this.data = data;
}
}
class B {
int data;
public B(int data) {
this.data = data;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof B) {
if (this.data == ((B) obj).data) {
return true;
}
}
return false;
}
}
class C {
int data;
public C(int data) {
this.data = data;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof C) {
this.data = ((C) obj).data;
return true;
}
return false;
}
@Override
public int hashCode() {
return Objects.hash(data);
}
}
public class HashSetMachanism {
public static void main(String[] args) {
Set<A> hashSet1 = new HashSet<>();
A a1 = new A(3);
A a2 = new A(3);
System.out.println(a1 == a2);// false
System.out.println(a1.equals(a2));// false
System.out.println(a1.hashCode() + ", " + a2.hashCode());// different
hashSet1.add(a1);
hashSet1.add(a2);
System.out.println(hashSet1.size());
System.out.println();
Set<B> hashSet2 = new HashSet<>();
B b1 = new B(3);
B b2 = new B(3);
System.out.println(b1 == b2);// false
System.out.println(b1.equals(b2));// true
System.out.println(b1.hashCode() + ", " + b2.hashCode());// different
hashSet2.add(b1);
hashSet2.add(b2);
System.out.println(hashSet2.size());
System.out.println();
Set<C> hashSet3 = new HashSet<>();
C c1 = new C(3);
C c2 = new C(3);
System.out.println(c1 == c2);// false
System.out.println(c1.equals(c2));// true
System.out.println(c1.hashCode() + ", " + c2.hashCode());// same
hashSet3.add(c1);
hashSet3.add(c2);
System.out.println(hashSet3.size());
}
}
public class LinkedHashSetMethod {
public static void main(String[] args) {
Set<String> linkedSet1 = new LinkedHashSet<>();
linkedSet1.add("가");
linkedSet1.add("나");
linkedSet1.add("다");
System.out.println(linkedSet1);
Set<String> linkedSet2 = new LinkedHashSet<>();
linkedSet2.add("나");
linkedSet2.add("다");
linkedSet2.addAll(linkedSet1);
System.out.println(linkedSet2);
linkedSet2.remove("나");
System.out.println(linkedSet2);
linkedSet2.clear();
System.out.println(linkedSet2);
System.out.println(linkedSet2.isEmpty());
Set<String> linkedSet3 = new LinkedHashSet<>();
linkedSet3.add("가");
linkedSet3.add("나");
linkedSet3.add("다");
System.out.println(linkedSet3.contains("나"));
System.out.println(linkedSet3.contains("라"));
System.out.println(linkedSet3.size());
Iterator<String> iterator = linkedSet3.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
Object[] objArray = linkedSet3.toArray();
System.out.println(Arrays.toString(objArray));
String[] strArray1 = linkedSet3.toArray(new String[0]);
System.out.println(Arrays.toString(strArray1));
String[] strArray2 = linkedSet3.toArray(new String[5]);
System.out.println(Arrays.toString(strArray2));
}
}
public class TreeMethod_1 {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<>();
for (int i = 50; i > 0; i-=2) {
treeSet.add(i);
}
System.out.println(treeSet.toString());
System.out.println(treeSet.first());
System.out.println(treeSet.last());
System.out.println(treeSet.lower(26));
System.out.println(treeSet.higher(26));
System.out.println(treeSet.floor(25));
System.out.println(treeSet.floor(26));
System.out.println(treeSet.ceiling(25));
System.out.println(treeSet.ceiling(26));
System.out.println();
int treeSetSize = treeSet.size();
System.out.println(treeSetSize);
for (int i = 0; i < treeSetSize; i++) {
System.out.println(treeSet.pollFirst() + " ");
}
System.out.println();
System.out.println(treeSet.size());
for (int i = 50; i > 0; i-=2) {
treeSet.add(i);
}
treeSetSize = treeSet.size();
for (int i = 0; i < treeSetSize; i++) {
System.out.println(treeSet.pollLast() + " ");
}
System.out.println();
System.out.println(treeSet.size());
for (int i = 50; i > 0; i-=2) {
treeSet.add(i);
}
SortedSet<Integer> sSet = treeSet.headSet(20);
System.out.println(sSet);
NavigableSet<Integer> nSet = treeSet.headSet(20, true);
System.out.println(nSet);
nSet = treeSet.headSet(20, false);
System.out.println(nSet);
sSet = treeSet.tailSet(20);
System.out.println(sSet);
nSet = treeSet.tailSet(20, true);
System.out.println(nSet);
nSet = treeSet.tailSet(20, false);
System.out.println(nSet);
sSet = treeSet.subSet(10, 20);
System.out.println(sSet);
nSet = treeSet.subSet(10, true, 20, false);
System.out.println(nSet);
nSet = treeSet.subSet(10, false, 20, true);
System.out.println(nSet);
System.out.println(treeSet);
NavigableSet<Integer> descendingSet = treeSet.descendingSet();
System.out.println(descendingSet);
descendingSet = descendingSet.descendingSet();
System.out.println(descendingSet);
}
}
class MyClass {
int data1;
int data2;
public MyClass(int data1, int data2) {
this.data1 = data1;
this.data2 = data2;
}
}
class MyComparableClass implements Comparable<MyComparableClass> {
int data1;
int data2;
public MyComparableClass(int data1, int data2) {
this.data1 = data1;
this.data2 = data2;
}
@Override
public int compareTo(MyComparableClass o) {
if (this.data1 < o.data1) return -1;
else if (this.data1 == o.data1) return 0;
else return 1;
}
}
public class TreeSetMethod_2 {
public static void main(String[] args) {
TreeSet<Integer> treeSet1 = new TreeSet<>();
Integer intValue1 = new Integer(20);
Integer intValue2 = new Integer(10);
treeSet1.add(intValue1);
treeSet1.add(intValue2);
System.out.println(treeSet1);
TreeSet<String> treeSet2 = new TreeSet<>();
String str1 = "가나";
String str2 = "다라";
treeSet2.add(str1);
treeSet2.add(str2);
System.out.println(treeSet2);
/*
TreeSet<MyClass> treeSet3 = new TreeSet<>();
MyClass myClass1 = new MyClass(2, 5);
MyClass myClass2 = new MyClass(3, 3);
treeSet3.add(myClass1);
treeSet3.add(myClass2);
System.out.println(treeSet3);
*/
//
TreeSet<MyComparableClass> treeSet4 = new TreeSet<>();
MyComparableClass myComparableClass1 = new MyComparableClass(2, 5);
MyComparableClass myComparableClass2 = new MyComparableClass(3, 3);
treeSet4.add(myComparableClass1);
treeSet4.add(myComparableClass2);
for (MyComparableClass mcc: treeSet4) {
System.out.println(mcc.data1);
}
//
TreeSet<MyClass> treeSet5 = new TreeSet<>(new Comparator<MyClass>() {
@Override
public int compare(MyClass o1, MyClass o2) {
if (o1.data1 < o2.data1) return -1;
else if (o1.data1 == o2.data1) return 0;
else return 1;
}
});
MyClass myClass1 = new MyClass(2, 5);
MyClass myClass2 = new MyClass(3, 3);
treeSet5.add(myClass1);
treeSet5.add(myClass2);
for (MyClass mcc: treeSet5) {
System.out.println(mcc.data1);
}
}
}
참조
https://incheol-jung.gitbook.io/docs/q-and-a/java/collection
https://www.programiz.com/java-programming/treeset