※효율은 ArrayList가 LinkedList 보다 좋다.
리스트는 세로로 생성. 그림 참조
List<Integer> list = new ArrayList<Integer>();
List <클래스명> list = new ArrayList <클래스명> ();
<클래스명> <= 제네릭 : 형태 고정,해당데이터 객체의 관리형태에 따라 개수지정
제넥릭은 클래스만 읽을 수 있다.
2개인 경우 - <클래스명, 클래스명>
public class TestController2 {
//웹 개발시 리스트를 많이 사용
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
//add(값) : 리스트에 값을 추가한다.
list.add(1);
list.add(2);
//get(인덱스 번호) : 리스트에서 해당 값을 가져온다.
System.out.println("해당 값 :"+list.get(0));
//size() : 리스트의 크기를 돌려준다.
System.out.println("크기 :"+list.size());
//set (인덱스 번호, 값) : 인덱스 번호에 해당하는 내용을 주어진 값을 변경한다.
list.set(0, 7);
System.out.println(list.get(0));
//remove(인덱스 번호) : 인덱스번호에 해당하는 것을 제거한다.
//인덱스 번호 이후에 것들을 당겨온다.
list.remove(0);
System.out.println(list.get(0));
//clear(): 리스트를 비운다.
list.clear();
System.out.println("크기 :"+list.size());
list.add(3);
list.add(7);
//contains(값) : 값이 리스트에 존재하는 지 여부를 돌려줌.
//boolean타입을 돌려줌
System.out.println(list.contains(3));
// isEmpty() : 리스트가 비어있는 여부를 돌려줌.
// 비어있으면 true 안비어있으면 false
System.out.println(list.isEmpty());
list.clear();
list.add(5);
list.add(7);
list.add(3);
int temp = 0;
// 여기에 오름차순 정렬을 구현하시오.
for(int i = 0; i<list.size()-1; i++) { //i는 0부터 1까지
for(int j=i+1; j<list.size(); j++) { //j는 1부터 2까지
if(list.get(i)>list.get(j)) {
temp=list.get(i);
list.set(i,list.get(j));
list.set(j, temp);
}
}
}
//출력 : 3 5 7이 한줄 씩 출력 됨
for(int i = 0; i< list.size(); i++) {
System.out.println(list.get(i));
}
//toArray 방법
list.clear();
list.add(5);
list.add(7);
list.add(3);
list.sort(null);
for(int i = 0; i< list.size(); i++) {
System.out.println(list.get(i));
}
// toArray 정리 필요
Object[] arr = list.toArray();
//toArray는 그냥 오브젝트 타입으로 배열을 생성해줌
// arr는 오브젝트이지만 제네릭이 Integer타입이라 integer 타입이다.
System.out.println(Arrays.toString(arr));
System.out.println(Integer.toString((int)arr[0])+10);
//뒤에서 부터 하는 방법
list.clear();
list.add(5);
list.add(7);
list.add(3);
list.add(10);
for(int i= 0; i < list.size() -1; i++) { // 0부터 1
for(int j = list.size() -1; j> i; j--) {// 2부터 1
if(list.get(i) > list.get(j)) {
list.add(list.get(i));
list.remove(i);
}
}
}
for(int i = 0; i< list.size(); i++) {
System.out.println(list.get(i));
HashMap<String, String> map = new HashMap<String, String>();
// put(값1 ,값2 ) : 값1을 키로 지정하고 해당 내용으로 값2를 지정한다.
map.put("가", "abc");
//get(값) : 값이 키와 동일한 것의 내용을 가져온다.
System.out.println(map.get("가"));
System.out.println(map.get("나"));
//map은 비순차적 개념이 라서 값이 없으면 없다고 알려준다.
//replace(값1, 값2 ) : 값 1이 키로 있는 해당내용을 값2를 지정한다.
//추가시켜주는 기능 없음.
map.replace("나", "ABC");
System.out.println(map.get("나"));
//put은 추가의 개념과 덮어씌운다는 의미도 있음.
//replace와 동일한 기능 put을 써라
map.put("가", "abc");
System.out.println(map.get("가"));
//remove(값) : 값이 키인 것을 제거한다.
map.remove("가");
System.out.println(map.get("가"));
//isEmpty() : 맵이 비어있는 지 여부를 돌려줌 boolean타입으로 알려준다.
System.out.println(map.isEmpty());
// containsKey(값) : 값과 일치하는 키가 있는 지 여부를 돌려줌.
// containsValue(값) : 값과 일치하는 내용이 있는 지 여부를 돌려줌.
System.out.println(map.containsKey("가"));
System.out.println(map.containsValue("abc"));
//clear() : 맴에 있는 내용들을 제거.
map.clear();
map.put("가", "abc");
map.put("나", "123");
map.put("다", "가나다");
//출력은 순차적으로 가 아닌 그냥 가깝게 놓은 것 부터 출력
//KeySet() : 맵의 키들을 Set의 형태로 변환한다.
//Set : 값을 순차적으로 넣을 수 있다. 넣을 수만 있다.
Set<String> keySet = map.keySet();
//Iterator : 값을 순차적으로 꺼낼 수 있다. 꺼낼 수만 있다.
//무조건 순차적으로만 꺼낸다.
// 레코드판과 동일
Iterator<String> keys = keySet.iterator();
//hasNext(): 다음 값이 존재하는 지 여부를 돌려줌
while(keys.hasNext()) {
//next(): 다음 값을 가져온다.
System.out.println(map.get(keys.next()));
}
크기 | 순차적 | 입력 | 출력 | 제한사항 | |
---|---|---|---|---|---|
배열(Array) | 무제한 | O | O | O | 생성 시 크기 지정 |
리스트(List) | 무제한 | O | O | O | x |
맵(Map) | 무제한 | x | O | O | x |
셋(Set) | 무제한 | O | O | x | x |
이터레이터(Iterator) | 고정 | O | x | O | 생성 시 데이터 들어감, 진행 중일 경우 이전값 취득불가 (직진남) |
for( 타입 변수명 : 순차형데이터) {
내용
}
순차형 데이터 가능 한 것 : 배열, 리스트
순서설명:
1.데이터를 순차적으로 꺼내온다.
2.꺼낸 데이터를 변수에 넣는다.
변수에 넣는다.
내용을 실행한다.
데이터가 없을 때 까지 반복
※주의사항 : 타입은 데이터에 저장된 형태와 동일해야 한다.
List<HashMap<String, String>> board
= new ArrayList<HashMap<String, String>>();
for(int i = 10; i > 0 ; i--) {
HashMap<String, String> data = new HashMap<String, String> ();
//new가 생성 될때마다 새로운 객체 주소를 받기 위해 for문 안에 있다.
data.put("no", Integer.toString(i));
data.put("title", "Test"+i);
data.put("writer", "Tester");
board.add(data);
}
//순차형 데이터 board
for(HashMap<String, String> data : board) {
System.out.println(data.get("no")+"\t"+data.get("title")
+"\t"+data.get("writer"));
}
많은 개념을 배워서 주말동안 복습을 하면서 좀 익숙해져야 할 것 같다. 하긴 지금 글쓰는날도 토요일이다. 오늘 열심히 해보자