<K,V>
static class Product{
private int no;
private String name;
private int price;
public Product(int no, String name, int price) {
this.no = no;
this.name = name;
this.price = price;
}
public int getNo() {return no;}
public void setNo(int no) {this.no = no;}
public String getName() {return name;}
public void setName(String name) {this.name = name;}
public int getPrice() {return price;}
public void setPrice(int price) {this.price = price;}
}
Map<Integer, Product> abc = new HashMap<>();
no name price
abc.put(101, new Product(101, "포카칩", 1500));
abc.put(102, new Product(102, "육개장", 800));
abc.put(103, new Product(103, "삼각김밥", 1200));
Product product1 = abc.get(102);
System.out.println(product1.getNo());
System.out.println(product1.getName());
System.out.println(product1.getPrice());
// 출력값
102
육개장
800
System.out.println(abc.size());
// 출력값 3
abc.remove(101);
// key 101과 value new Product(101, "포카칩", 1500))전부 삭제
102 육개장부터 시작됨
List<String> a = Arrays.asList("a","b","c");
System.out.println(a);
// 출력값 [a, b, c]
ArrayList<String> a = new ArrayList<>();
a.add("a");
a.add("3");
a.add("A");
a.add("1");
a.add("가");
// a = [a, 3, A, 1, 가]
Collection.sort(a);
// 오름차순(숫자, 대문자, 소문자, 한글순)으로 정렬됨
for(int i = 0; i < a.length; i++){
System.out.print(a.get(i));
}
// 출력값 1, 3, A, a, 가
Collection.reverse(a);
// 내림차순(한글, 소문자, 대문자, 숫자 순)으로 정렬됨
for(int i = 0; i < a.length; i++){
System.out.print(a.get(i));
}
// 출력값 가, a, A, 3, 1
클래스명 implements Comaparable<T>
public interface Comparable{
int compareTo(Object o);
}
★구현클래스에서 implements Comparable`<T>`선언 후, 기준 지정★
class Student implements Comparable<Student>{
String name;
int age;
Student(int age, String name){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
// 1. 나이순으로 비교
public int compareTo(Class c){
return this.age - c.age;
}
// 2. 이름순으로 비교
// public int compareTo(Class c){
// return this.name.compareTo(c.name);
// }
/*
* 이 객체와 다른 객체를 비교했을 때
* 양수 이 객체가 큼
* 음수 이 객체가 작음
* 0 같음
*/
}
★실행 클래스에서 Collection.sort(배열명)을 실행하여 구현클래스에서 지정한 기준대로 정렬★
public class StudentApp{
public static void main(String[]args){
List<Student> list = Arrays.asList(new Student("홍길동", 20),
new Student("김유신", 24),
new Student("을지문덕", 21));
Collection.sort(list);
for(Student arr: list){
System.out.println(arr.getName()+": "+arr.getAge()+"세");
// 나이순으로 정렬되어 출력됨
}
}
}
클래스명 implements Comparator
public interface Comparator{
int compare(Object o1, Object o2);
boolean equals(Object obj);
}
★구현 클래스
class Student{
String name;
int age;
Student(int age, String name){
this.name = name;
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age = age;
}
}
★실행클래스에서 implements Comparator<T>선언★
☆ Comparable은 구현클래스에서 implements Comparable<T>
☆
public class StudentApp implements Comparable<Student>{
public static void main(String[]args){
List<Student> list = Arrays.asList(new Student("홍길동", 20),
new Student("김유신", 24),
new Student("을지문덕", 21));
/*
* 두 객체의 값을 비교했을 때
* 양수 이 객체가 큼
* 음수 이 객체가 작음
* 0 같음
*/
// 이름으로 오름차순 정렬
Comparator<Student> nameComparator = new Comparator<>() {
public int compare(Student name1, Student name2) {
return name1.getName().compareTo(name2.getName());
}
};
Collections.sort(list, nameComparator);
for(Student arr : list) {
System.out.println(arr.getName()+": "+arr.getAge()+"세");
}
// 나이로 오름차순 정렬
Collections.sort(list, new Comparator<Student>(){
@Override
public int compare(Student o1, Student o2) {
return o1.getAge() - o2.getAge();
}
});
for(Student arr : list) {
System.out.println(arr.getName()+": "+arr.getAge()+"세");
}
}
}