import java.util.*;
class MaxList {
private List<Integer> list;
private Scanner sc;
public MaxList() { // 생성자 함수로 초기화
list = new LinkedList<>();
sc = new Scanner(System.in);
}
public void inputList() { // 입력
System.out.print("정수(-1이 입력될 때까지)>>");
int num = 0;
while (num != -1) {
try {
num = sc.nextInt();
list.add(num);
} catch (Exception e) {
System.out.println("다시 입력하세요");
continue;
}
}
// sc.close();
}
public int getMax() { // 큰 수 찾기
int maxNum = Integer.MIN_VALUE;
for (int i = 0; i < list.size(); i++) {
if (list.get(i) > maxNum) {
maxNum = list.get(i);
}
}
System.out.println("가장 큰 수는 " + maxNum);
return maxNum;
}
}
class JavaPractice {
public static void main(String[] args) {
MaxList list = new MaxList();
list.inputList();
list.getMax();
}
}
Set | List | |
---|---|---|
요소의 중복 (동일한 요소/객체) | X | O |
요소의 순서 | X | O |
import java.util.*;
class JavaPractice {
public static void main(String[] args) {
Set<String> set = new HashSet<>();
set.add("Toy");
set.add("Box");
set.add("Robot");
set.add("Box"); // 추가해도 반영 X
System.out.println("인스턴스 수 : " + set.size());
/*
* for(Iterator<String> itr = set.iterator(); itr.hasNext(); ) {
* System.out.print(itr.next() + "\t"); }
*/
for (String s : set) {
System.out.print(s + ' ');
}
}
}
[Console]
인스턴스 수 : 3
Box Robot Toy
import java.util.*;
class Num{ // extends Object
private int num;
public Num(int n) {num = n;}
@Override
public String toString() {
return String.valueOf(num);
}
@Override
public int hashCode() {
return num % 3;
}
@Override
public boolean equals(Object obj) {
if(num == ((Num)obj).num)
return true;
else return false;
}
}
class JavaPractice {
public static void main(String[] args) {
HashSet<Num> set = new HashSet<>();
set.add(new Num(7799));
set.add(new Num(9955));
set.add(new Num(7799));
System.out.println("인스턴스 수: " + set.size());
}
}
Object 클래스 >> int hashCode()
Object 클래스 >> String toString()
import java.util.*;
class Num {
private int num;
public Num(int n) {
System.out.println(super.hashCode()); // 해쉬코드를 출력해주는 코드
num = n;
}
/*
* @Override public String toString() { return String.valueOf(num); }
*
* @Override public int hashCode() { return num % 3; }
*
* @Override public boolean equals(Object obj) { if(num == ((Num)obj).num)
* return true; else return false; }
*/
}
class JavaPractice {
public static void main(String[] args) {
HashSet<Num> set = new HashSet<>();
set.add(new Num(7799));
set.add(new Num(9955));
set.add(new Num(7799));
}
}
[Console]
1227229563
1982791261
1562557367
해쉬코드의 구역이 | 적을 때 | 많을 때 |
---|---|---|
속도 | 느리다 | 빠르다 |
안에서 비교하는 | 시간이 많이 걸린다 | 시간이 적게 걸린다 |
메모리 | 많이 잡아먹지 않는다 | 많이 잡아먹는다 |