IT_Note



우선 스택은 LIFO (last in first out) 


큐는 FIFO(First in first out)이다.


스택은 밑이 막힌통에 차례대로 저장을 하고 가장 위에서 부터 꺼내는 구조


큐는 뻥 뚫린 통에 저장을 하고 넣은 순서대로 값이 빠져나오는 구조.




스택의 예


C에서 함수를 호출할 때, 현재 함수에서 사용되는 값을 스택에 집어넣고 부르는 함수에 쓰일 값들에 대한 작업을 시작합니다. 작업이 끝나면, 함수를 리턴하고 스택에 넣었던 값을 꺼냅니다. 이렇게 하면 함수가 호출되기 이전의 상태로 복원 시킬 수 있습니다. 


큐의 예


키보드 입력이 있다. 키보들 값을 임력하면 임시 버퍼에 쌓이게 된다. 

프로그래밍에서는 이 입력 값을 이용하기 위해 입력된 순서대로 값을 꺼내오게 된다.



ArrayList

카테고리 없음2017. 4. 17. 02:09


list는 배열의 한계 때문에 만들어진 자료형이다.


배열을 사용하기 위해서는 크기를 정해야 하는데 크기를 알 수 없는 경우가 많다.

List는 메모리가 허용하는 한 계속해서 추가할 수 있다.


java.util.List 인터페이스

java.util.Collection인터페이스를 구현한다.



자료의 내부적인 자동 동기화 기능이 없다.

내부적으로 자료를 배열구조로 가지고 있는 객체, 데이터의 추가/삭제를 위해서는 내부적인 임시배열을 작성 후 데이터를 복사한다 (자료 추가/삭제시 단점)

레퍼런스 타입의 데이터만 저장할 수 있다

데이터 내용의 중복이 가능하다

null값 허용.


장점 : 데이터의 인덱스를 가지고 있기 때문에 검색,참조시 유리, 

단점 : 대량의 자료를 추가/삭제시 성능 저하.






1.선언



List<String> list = new ArrayList<>();


리스트에 저장할 데이터의 타입을 정한다. 위에는 String

<>꺽쇠는 제네릭이라고 하며 데이터의 타입을 정함.

 String이나 Integer , 클래스를 타입으로 지정하기도 한다.


제네릭으로 타입을 지정 안해줘도 되지만 보통 해줌 오류방지등등의 이점..

안할 경우 여러가지 add가능.


ArrayList<String> list = new ArrayList<>(); , Arraylist라고 해도 무방하다. 

차이점은 List는 인터페이스 이고 ArrayList는 구현체이다. List를 기반으로 만들어진것이 ArrayList..

이 부분은 다형성과 관련되어 있다. 일단 이정도로 넘어감.




2.추가


추가- list.add("첫번째인덱스"); 

list의 0번째 인덱스에 추가된다.


현재 list는 [첫번째인덱스]


요소값을 넣고 추가할 수도 있다. 

- list.add(1,"두번째인덱스");


현재 list는 [첫번째인덱스,두번째인덱스]



3.조회 


인덱스로 값을 조회하고 싶다면 get(index)함수 사용.


list.get(2);










자바문법 복습중...








1.charAt(인수)  - 인수번째의 문자를 읽어낸다



String a = "가나다라마바사아자차카타파하";


System.out.println(a.charAt(1)); 



일경우 "나" 출력된다. 인덱스 0부터 시작.




- for문을 이용하여 거꾸로 출력하고자 한다면??


for(int i=a.length-1;i>=0;i--){


System.out.print(a.charAt(i));


}


length값은 14로 나오지만 인덱스는 0~13이므로 -1을 해주고.


i는 0과 같거나 큰 조건, 1씩 줄어들게 해준다.



----------------------------------



2.indexOf(문자) - 해당문자가 들어있는 위치를 알려준다, 문자가 없을 경우 -1을 반환한다.



마찬가지로 인덱스 0부터 시작. 


lastIndexOf같은경우 뒤부터 센다.


System.out.println(indexOf("다"));


일경우 0,1,2 가,나,다 

즉, 3번째인 2가 출력



3.substring(인수,인수) - 시작과 끝을 지정하여 문자열을 읽어낸다


첫번째 인수는 시작지점  - 반환값에포함

두번째인수는 끝지점. - 반환값에 포함 x  


반환값은 예제를보면서 설명.


System.out.println(a.substring(2,5));


일경우 2부터 5까지 문자를 출력한다. 

가나[다]라마[바]사


끝지점은 반환값에 불포함이므로


다,라,마 까지만 출력.