학원에서 학습한 내용을 개인정리한 글입니다.
//List Interface
//X List list = new List;
//class implement list Interactive
//리스트를 구현한 클래스를 이용
//ArrayList, LinkedList
//선형자료구조를 가지고 있으며 Index number가있음
//데이터 순서가 있음
//중복값 저장이 가능
//클래스 이용방식으로 이용
ArrayList arrList;
arrList = new ArrayList();
//저장히기
//add(Object): 맨 뒤에 추가 / add(index, object): 원하는 위치에 추가
arrList.add("OOO");//save 0 index
arrList.add("ㅁㅁㅁ");//save 1 index
System.out.println(arrList);
//별도의 설정이 없다면 Object타입으로 저장
arrList.add(10);
System.out.println(arrList);
arrList.add(true);
System.out.println(arrList);
//특정 인덱스에 데이터 추가
//add(index, 값)
arrList.add(2,180.5);
System.out.println(arrList);
//데이터 수정하기
//특정 인덱스의 값을 변경하기
//set(index, 값)
arrList.set(0,"OUO");
System.out.println(arrList);
//clear(): 전체 데이터를 삭제
//remove(index): 특정인덱스의 값을 삭제할때
//remmove(Object): 인자값과 일치하는 값을 삭제
//*주의점: 비교하는 클래스에 equals, hasecode 메소드가 정의되어있어야함
arrList.clear();
System.out.println(arrList);
arrList.remove(0);
System.out.println(arrList);
arrList.remove(true);
System.out.println(arrList);
//클래스 선언해서 ArrayList로 관리
ArrayList foods = new ArrayList();
foods.add(new Food("냉면", 8000, "한식", 4));
foods.add(new Fo**od**("짜장면", 9000, "중식", 3));
System.out.println(foods);
foods.add(1, new Food("돈까스", 12000, "양식", 3));
System.out.println(foods);
foods.set(1, new Food("콩국수", 10000, "한식", 3));
System.out.println(foods);
foods.remove(0);
System.out.println(foods);
foods.remove(new Food("콩국수", 10000, "한식", 3));
System.out.println(foods);
foods.clear();
System.out.println(foods);
//저장된 값 조회
//get(index)
Object o = arrList.get(0);
String name = (String)arrList.get(0);
System.out.println(name);
boolean flag = (Boolean)arrList.get(3);
System.out.println(flag);
Food temp = (Food)foods.get(0);
System.out.println(temp);
//ArrayList 길이 구하기
//size()
System.out.println(foods.size());
System.out.println(arrList.size());
//반복문 이용해서 데이터 조회하기
for(int i = 0; i<arrList.size(); i++) {
System.out.println(arrList.get(i));
}
//foods에서 전체 데이터타입, 이름, 가격 출력
for(int i = 0; i<foods.size(); i++) {
Food n = (Food) foods.get(i);
System.out.println(n.getType() + " " + n.getName() + " " + n.getPrice());
}
for(Object n: foods) {
Food f =(Food)n;
System.out.println(f.getType() + " " + f.getName() + " " + f.getPrice());
}
//iterator()메소드를 이용해서 데이터를 조회하기
//Iterator Interface 구현체를 반환
Iterator it = foods.iterator();
while(it.hasNext()){
Food f = (Food) it.next(); // 저장된 객체 한개 반환
System.out.println(f.getName());
}
//List interface가 제공하는 Default메소드를 이용
foods.forEach(new Consumer() {
@Override
public void accept(Object o) {
Food f = (Food) o1;
System.out.println(f.getName());
}
});
foods.forEach((o1) -> System.out.println(o1));
foods.forEach(System.out::println);
if(personList.contains(new Person("권ㅇㅇ", 29, 173.3, '남'))) {
personList.add(new Person("권ㅇㅇ", 29, 173.3, '남'));
}
if(personList.contains(new Person("권ㅇㅇ", 29, 173.3, '남'))) {
personList.add(new Person("권ㅇㅇ", 29, 173.3, '남'));
}
int index = list.indexOf(new Person("김ㅇㄴ", 31, 174.3, '남'));
System.out.println(index);
((Person)list.get(index)).setName("김ㅁㅁ);
//3.List 자료형을 객체 배열로 반환해주는 메소드
//toArray()함수 이용 -> Object[]로 반환
Object[] personArr = list.toArray();
for(Object o:personArr) {
System.out.print(o);
}
list.toArray(value -> {
System.out.println(value);
Object[] obj = new Object[list.size()];
Object o = list.get(value)
; return new Object[] {o};
});
for(Object o: personArr) {
System.out.println(o);
}
//객체 배열을 List로 반환
//Arrays.asList() Method 이용
String[] names = {"OOO", "AAA", "BBB"};
System.out.println(names);;
// List nameList = Arrays.asList(names);
List nameList = new ArrayList(Arrays.asList(names)); // 이렇게 쓰면 추가이용가능
System.out.println(nameList);
// nameList.add("CCC"); // 불변 read Only, 길이 변경이 불가능
nameList.set(1, "GGG");
System.out.println(nameList);
//초기화한 List 생성하기
//List.of()
List numbers = List.of(1,2,3,4,5,6,7);
System.out.println(numbers);
// numbers.add(8); // set과 add 둘다 불가능.완전 고정값
// 아예 새로 제작해서 늘려주는 방법 사용
Class Person
public static void referenceMethodTest(Object o) {
if(o instanceof Person) {
Person p = (Person)o;
if(p.age >20) {
System.out.println(p);
}
}
}
List Controller
//Method 참조
list.forEach(System.out::println);
list.forEach(Person::referenceMethodTest);
//Comparator interface @Functional Interface
//정렬에 사용하는 기준이 되는 값을 반환하는 추상메소드 선언
//int compare(Object o, Object o2)
//양수:변경해
//음수:변경하지마
//0: 변경하지마 -> 같은값
numbers.sort(new Comparator() {
@Override
public int compare(Object prev, Object next) {
Integer i = (Integer)prev;
Integer j = (Integer)next;
if(i>j) return 1;
else if(i<j) return -1;
return 0;
}
});
System.out.println(numbers);
numbers.sort((o, o2)->{
Integer prev=(Integer)o;
Integer next=(Integer)o2;
if(prev < next) return 1;
else if(prev > next) return -1;
return 0;
});
numbers.sort((o, o2)->{
Integer prev=(Integer)o;
Integer next=(Integer)o2;
return prev - next;
});
public class PersonNameAsc implements Comparator{
@Override
public int compare(Object o1, Object o2) {
Person prev = (Person)o1;
Person next = (Person)o2;
//오름차순 정렬
return prev.getName().compareTo(next.getName());
}
}
list.sort(new PersonNameAsc());
//compareable 인터페이스를 이용해서 객체의 기본 우선순위를 설정할 수 있음
//int compareTo(Object) Method를 재정의
public class PersonHeightAsc implements Comparator{
@Override
public int compare(Object o1, Object o2) {
Person prev = (Person) o1;
Person next = (Person) o2;
return (int)prev.getHeight() - (int)next.getHeight();
}
}
list.sort(new PersonHeightAsc());
list.sort((o, o1) ->{;
Person pre = (Person)o;
Person next = (Person)o1;
return next.getName().compareTo(pre.getName());
});
list.forEach(System.out::println);
//Collection Class 에서 제공하는 sort 메소드 이용
Collections.sort(list);
list.forEach(System.out::println);
//Tree 저장소에 넣을때 반드시 필요
@Override
public int compareTo(Object o) {
return (int)Math.ceil(height - ((Person)o).height);
}
public static void linkedList() {
//연결된 리스트
//ArrayList와 동일하다
LinkedList llist = new LinkedList();
llist.add("hi");
llist.add(10);
System.out.println(llist);
llist.add(1, "middle add");
System.out.println(llist);
llist.addFirst("hoho");
System.out.println(llist);
llist.addLast("hihi");
System.out.println(llist);
System.out.println(llist.getFirst());
for(int i = 0; i < llist.size(); i++) {
System.out.println(llist.get(i));
}
Collections.sort(llist);
List list = new ArrayList();
list = new LinkedList();
Collection c = new ArrayList();
c = new LinkedList();
new ArrayList();
}