리스트(List)
•
배열과 달리 리스트는 크기가 정해져 있지 않아 원하는 만큼의 값을 담을 수 있다.
package lionlike.java10m.week1.day1007.practice;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
public class List {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("안녕");
sb.append(" 반가워");
sb.append(" 잘가");
System.out.println(sb);
sb.insert(0,"삐용 ");
System.out.println(sb.toString()); // 문자열 포메팅
sb.substring(0,sb.length()-3);
System.out.println(sb.substring(0,sb.length()-3)); // 문자열 포메팅
String[] day = {"m","t","w","t","f","s","s"};
System.out.println(Arrays.toString(day));
System.out.println(day.length);
// List 자료형 중 가장 간단한 형태의 자료형인 ArrayList에 대해서 알아보자.
// 박찬호 선수가 총 3번의 투구를 138, 129, 142(km) 의 속도록 던졌다면 다음과 같이 코드를 작성할 수 있다.
// 리스트와 배열의 가장 큰 차이는 크기가 정해져 있지 않고 동적으로 변한다는 점이다
ArrayList<Integer> speed = new ArrayList<>();
speed.add(135);
speed.add(130);
speed.add(128);
speed.add(148);
speed.add(135); // 중복 가능
System.out.println(speed);
speed.add(0, 150);
System.out.println(speed);
System.out.println(speed.size());
System.out.println(speed.contains(148));
System.out.println(speed.contains(147));
// System.out.println(speed.remove(148)); // List는 객체를 삭제할수 없다?
System.out.println(speed.remove(0));
System.out.println(speed);
String[] data = {"138", "129", "142"}; // 이미 투구수 데이터 배열이 있다.
ArrayList<String> pitches = new ArrayList<>(Arrays.asList(data)); // 배열을 리스트로 바꾸는 방법
System.out.println(pitches); // [138, 129, 142] 출력
String result = "";
for (int i =0; i<pitches.size(); i++) {
result += pitches.get(i);
result += ",";
}
String re = result.substring(0,result.length()-1);
System.out.println(re);
String result1 = "";
System.out.println(pitches); // 데이터 상태 확인
result1 = String.join(",",pitches);
System.out.println(result1);
pitches.sort(Comparator.naturalOrder()); // 오름차순
System.out.println(pitches);
System.out.println(pitches.get(0)+1);
pitches.sort(Comparator.reverseOrder()); // 내림차순
System.out.println(pitches);
String[] data1 = {"138", "129", "142"}; // 이미 투구수 데이터 배열이 있다.
Arrays.sort(data1);
System.out.println(Arrays.toString(data1));
// 문자열로 된 숫자들이지만 오름차순 내림차순 구분이 가능.
}
}
Java
복사
맵 (Map)
•
key 값 중복 불가
•
key 값이 중복 되고 value 값이 다를 때 마지막 value 값 사용
package lionlike.java10m.week1.day1007.practice;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
public class Map {
public static void main(String[] args) {
HashMap<String, Integer> size = new HashMap<>();
size.put("우주완", 100);
size.put("김주완", 80);
size.put("이주완", 200);
size.put("환주완", 170);
size.put("게주완", 150);
size.put("게주완", 150); // 중복 불가
size.put("게주완", 200); // 중복 불가 마지막꺼 사용
System.out.println(size);
System.out.println(size.get("우주완"));
System.out.println(size.getOrDefault("우주완",222)); // 있으면 안뜸
System.out.println(size.getOrDefault("이지우",222)); // 없으면 default 값 설정
System.out.println(size.containsKey("우주완"));
System.out.println(size.containsKey("이지우"));
System.out.println(size.remove("이지우")); // key 값이 없을시 null
System.out.println(size);
System.out.println(size.remove("우주완")); // 삭재후 value 값 출력
System.out.println(size.size()); //
System.out.println(size.keySet()); // key 값만 리턴
List<String> keyList = new ArrayList<>(size.keySet()); //?
System.out.println(keyList);
}
}
Java
복사
Set 자료형은 다음과 같이 List 자료형으로 바꾸어 사용할 수도 있다.
List<String> keyList = new ArrayList<>(map.keySet());
Java
복사
집합 (Set)
public class Set {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>(Arrays.asList("H","e","l","l","o"));
System.out.println(set);
}
}
// 출력 : [e, H, l, o]
Java
복사
리스트나 배열은 순서가 있기(ordered) 때문에 인덱싱을 통해 자료형의 값을 얻을 수 있지만 집합 자료형은 순서가 없기(unordered) 때문에 인덱싱으로 값을 얻을 수 없다. 이는 마치 맵 자료형과 비슷하다. 맵 자료형 역시 순서가 없는 자료형이라 인덱싱을 지원하지 않는다.
•
중복을 허용하지 않는다.
•
순서가 없다(Unordered).
package lionlike.java10m.week1.day1007.practice;
import java.util.Arrays;
import java.util.HashSet;
public class Set {
public static void main(String[] args) {
HashSet<Integer> set1 = new HashSet<>(Arrays.asList(1,2,3,4,5,6));
HashSet<Integer> set2 = new HashSet<>(Arrays.asList(4,5,6,7,8,9));
System.out.println(set1);
HashSet<Integer> instersection = new HashSet<>(set1); // set1으로 instersection 객체 생성
System.out.println(instersection);
instersection.retainAll(set2); // 교집합
System.out.println(instersection);
instersection.addAll(set2); //합집함
System.out.println(instersection);
instersection.removeAll(set1); //차집합
System.out.println(instersection);
HashSet<String> num = new HashSet<>();
num.add("하나");
num.add("둘");
num.add("셋");
num.add("하나");
System.out.println(num);
}
}
Java
복사
String열 int 변환
Integer.parseInt(a)