프로그래밍 언어/Java
java ArrayList.contains 헷갈리는 부분
65살까지 코딩
2022. 1. 15. 12:05
728x90
반응형
ArrayList의 contains는 자주 사용하는 문법인데 헷갈리는게 있어서 정리하려고한다
String string = "abc"; //리터럴 방식
arrayList.add(string);
String string2 = "abc"; //리터럴 방식
String string3 = "abc"; //리터럴 방식
System.out.println(string ==string2);
System.out.println(string ==string3);
System.out.println(string2 ==string3);
System.out.println(string.equals(string2));
System.out.println(arrayList.contains(string2));
System.out.println(arrayList.contains("abc"));
/*
true
true
true
true
true
true
*/
리터럴 방식으로 했을 떄는 모두 같은 주소를 가르켜 모두 다 같은 값
ArrayList<String> arrayList = new ArrayList<>();
String string = new String("abc");
arrayList.add(string);
String string2 = new String("abc");
String string3 = new String("abc");
System.out.println(string ==string2);
System.out.println(string ==string3);
System.out.println(string2 ==string3);
System.out.println(string.equals(string2));
System.out.println(arrayList.contains(string2));
System.out.println(arrayList.contains(string3));
System.out.println(arrayList.contains("abc"));
/*
false
false
false
true
true
true
true
*/
서로다른 개체이므로 false 지만
ArrayList.contains()에서는 객체로 비교하는 것이 아니라 값으로 비교하는 것을 알 수 있다!
cf). HashMap의 containsKey나 다른 contain들도 값을 기준으로 여부를 확인하는 것 같다!
728x90
반응형