package day6;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class ArrayListDemo {
public static void main(String[] args) {
// ArrayList 사용하고 이해하기
// 객체 생성
List<Integer> str = new ArrayList<Integer>();
// 요소 저장
str.add(1);
str.add(1);
str.add(1);
str.add(1);
str.add(1);
// foreach 사용해서 출력하기
str.forEach(x -> System.out.println(x) );
}
}
// @ 왜 저기서 리턴이 없는지... 보이드라 그런가?
package day6;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
public class ListDemo1 {
public static void main(String[] args) {
String[] animals1 = { "aa", "bbbb", "ccc" };
List<String> animals2 = Arrays.asList(animals1);
animals2.set(1, "tt");
animals2.forEach(x -> System.out.println(x));
System.out.println("--------------");
List<String> animals3 = new ArrayList<String>(animals2);
animals3.add(1, "t");
animals3.forEach(x -> System.out.println(x));
// 길이순 정렬 방법1
// animals3.sort(new Comparator<String>() {
// public int compare(String o1, String o2) {
// return o1.length() - o2.length();
// };
// });
System.out.println("--------------");
// 길이순 정렬 방법2
animals3.sort( (a,b) -> a.length() - b.length() );
animals3.forEach( x -> System.out.println(x));
}
}
// animals2는 순수한 리스트가 아니라 스트링을 리스트로 바꾼거라 add 기느이 안되는 것
package day6;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.IntFunction;
public class HashSetDemo1 {
public static void main(String[] args) {
String[] fruits = { "apple", "banana", "pineapple", "grape" };
Set<String> sets = new HashSet<String>();
for (String s : fruits) {
sets.add(s);
}
// 과일바구니에 바나나가 들어있는지
sets.contains("banana");
System.out.println(sets.contains("banana"));
// array <-> collection 변환: Arrays.asList
// array -> list
List<String> lists = Arrays.asList(fruits);
System.out.println(lists);
// list -> array : .toArray()
Object[] listsArray = lists.toArray();
for (Object object : listsArray) {
System.out.println(object.toString());
}
// 1 2 3 4 를 담는 배열arrays를 만들어서 -> list로
Integer[] it = new Integer[] { 1, 2, 3, 4 };
List<Integer> it2 = Arrays.asList(it);
// intfunction을 활용하여 integer를 입력받아 +2, -2, *2를 한 결과를 담은 배열 arrays를 한 방에 만들
IntFunction<Integer[]> temp = x -> new Integer[] { x + 2, x - 2, x * 2 };
Integer[] result = temp.apply(3);
for (Integer i : result) {
System.out.print(i);
}
}
}
package day6;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
class Fruit{
String name;
public Fruit(String name) {
super();
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Fruit [name=" + name + "]";
}
@Override
public int hashCode() {
return this.name.hashCode();
}
@Override
public boolean equals(Object obj) {
Fruit target = (Fruit) obj ;
return this.name.equals(target.name);
}
}
public class HashSetDemo2 {
public static void main(String[] args) {
Set<Fruit> fruits = new HashSet<Fruit>();
fruits.add(new Fruit("apple"));
fruits.add(new Fruit("apple"));
fruits.add(new Fruit("banana"));
// set의 성격을 이해하면서
// fruits의 개수 출력
System.out.println(fruits.size());
// 모든 요소 출력
fruits.forEach(x -> System.out.println(x));
Fruit f1 = new Fruit("pineapple");
Fruit f2 = new Fruit("pineapple");
System.out.println(f1.equals(f2)); // 원래는 false
System.out.println(f1.hashCode());
System.out.println(f2.hashCode());
List<Object> lists = Arrays.asList(fruits.toArray());
System.out.println(lists.get(0).equals(lists.get(1)));
}
}
// new 로 만들면 set이어도 중복 가능
// 근데 이 비교가 hashcode로 이루어지는 거니까
// equlas, hashcode를 오버라이딩해서 new이어도 이름 같으면 중복 안되게 만들 수 있음
package day6;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;
public class HashMapDemo1 {
public static void main(String[] args) {
// Map<String, Integer> maps = Map.of("홍길동", 95 , "철수", 100);
Map<String, Integer> maps = new HashMap<String, Integer>();
maps.put( "홍길동", 95);
maps.put( "철수", 100);
Map<String, Integer > peoples = new HashMap<String, Integer>(maps);
Map<Student, Integer> stMap = new HashMap<Student, Integer>() ;
stMap.put(new Student("kim"), 10);
stMap.put(new Student("lee"), 20);
stMap.put(new Student("kim"), 5);
System.out.println(stMap.size());
stMap.get(stMap);
System.out.println(stMap);
BiConsumer<String, String> bic = (a,b) -> System.out.println(a+b);
bic.accept("aaa", "bbb");
stMap.forEach((k,v) -> System.out.println("key:" + k.getName() + ", value: " + v) );
}
}
// 버전 올리면 map.of 됨
// key value를 만들어주는 기능
// 저걸 씌워줬으니 이제 people은 완벽한 hashmap이 된 것
: 해당 Collection의 정렬 (list, map, set 무엇이든)
: 해당 Collection의 정렬 뒤집기
: 해당 key의 index 값을 찾아주는 기능
package day6;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Demo1 {
public static void main(String[] args) {
List<String>temp = List.of("111","222","333","444");
List<String>lists = new ArrayList<String>(temp);
Set<String>sets = new HashSet<String>();
Collections.sort(lists, Collections.reverseOrder() );
System.out.println(lists);
String [] strarray = { "333", "222", "111", "444"};
List<String> lists2 = Arrays.asList(strarray);
Collections.sort(lists2);
System.out.println(lists2);
int index = Collections.binarySearch(lists2, "222");
System.out.println(index);
}
}