티스토리 뷰
반응형
package prj190715;
import java.util.*;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList(); //<Object> 생략가능
list.add("1111");
list.add("2222");
list.add("3333");
list.add("4444");
list.add(3333); //list.add(new Integer(2)); autoboxing 기본자료형을 객체자료형으로 형변환.
System.out.println(list);
list.add(0, "000");
System.out.println(list);
System.out.println("index"+list.indexOf("3333"));
list.remove("3333");
System.out.println(list);
System.out.println(list.remove("3333"));
System.out.println(list);
System.out.println("index" + list.indexOf("3333"));
for(int i = 0; i<list.size(); i++) {
list.set(i, i+"");
}
System.out.print("{");
for(int i =0; i<list.size();i++) {
System.out.print(list.get(i)+" , ");
}
System.out.print("}\n");
for(int i =0; i<list.size(); i++) {
System.out.println(" size = "+list.size()+" i = "+i+" remove = "+list.remove(i));
}
// for(int i =list.size()-1; i>=0; i--) {
// list.remove(i);
// } //삭제할때는 list.size()-1 부터인 뒤부터 삭제 할 것!
System.out.println(list);
}
}
왜 1,3만 남는지 이상해 했는데, List 형식의 특징이었다.
list 형식이 삭제 시 한 칸씩 앞으로 당겨서 복사, null값으로 전환하면서
list 사이즈도 변화함으로 i<list.size()에서 size값이 계속 변화하는것.
인덱스 넘버는 그대로인데, size와 데이터 값이 앞으로 당겨서 복사 되기 때문에 벌어지는 일.
그래서 list는 뒤부터 삭제하는것이 낫다.
중간에 끼워넣고 중간삭제 해버리면 연산도 느려짐
list 의 삭제는 무조건 이렇게 해야 한다.
안그러면 앞의 예 처럼 데이터가 남아버린다
=================================================
list를 implements 한 리스트 종류
1. arraylist
2. linked list
3. stack
4. queue 라고 보면 됨
다만 stack 은 stack.add가 아니라 stack.push, stack.pop / 후입선출(Last Input First Output) LIFO
queue.offer queue.poll로 호출한다. / 선입선출(First Input First Output)FIFO
==================================================
Iterator ★★★★★중요
package prj190715;
import java.util.*;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList();
list.add("1111");
list.add("2222");
list.add("3333");
list.add(3);
list.add(2, 1);
Iterator it = list.iterator(); //iterator type : it //일회용 반복자(반복가능)
// list안에 iterator 메소드가 있고 그 이터레이터는 이터레이터 타입의 it 참조 변수로 정의
while(it.hasNext()) { //it의 다음에 내용이 있는지?
System.out.println(it.next()); //그럴땐 출력
}
//일회용이라 두번 해도 두번 출력안됨. 두번하고 싶으면 Iterator type 한번 더 정의해야 함
while(it.hasNext()) { //it의 다음에 내용이 있는지? true/ false 반환
System.out.println(it.next()); //그럴땐 출력
}
}//main end
}//class end
반응형
'JAVA' 카테고리의 다른 글
190715 LinkedList예제 (0) | 2019.07.15 |
---|---|
190715 Generics 예제 (0) | 2019.07.15 |
190712 Swing, JFrame 이용 계산기 (무식한버전) (0) | 2019.07.12 |
190711 JAVA Frame 상속, 좌표값 팝업+label로 나타내기 (0) | 2019.07.11 |
190711 GUI, EventHandler 예제 (0) | 2019.07.11 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- js
- jQuery
- 엑셀다운로드
- JSON파싱
- Spring
- selectbox
- select제어
- 정규식
- 계좌번호정규식
- mybatis
- 정규식 숫자만
- 정규식 한글만
- 인텔리제이
- JSON날짜
- SpringXmlModelInspection
- POI EXCEL
- IntelliJ #gradle #tomcat #spring #springmvc
- JSON
- 정규식 특수문자
- spring error #
- 공백찾기
- no getter for property named
- poi
- poi 엑셀
- Failed to load resource: the server responded with a status of 404 (Not Found)
- PageNotFound - No mapping for GET
- Regex
- spring 엑셀
- ''찾기
- 이메일 정규식
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함