2022.12.01 JAVA 25일차 Collection(LIst), Stack,Queue
2022. 12. 1. 16:25ㆍJAVA
컬렉션 프레임워크의 핵심 인터페이스
List : 순서가있는 데이터의 집합 , 데이터의 중복을 허용
구현 클래스 : ArrayList, LinkedList, Stack, Vector 등
Set : 순서를 유지하지않는 데이터의 집합, 데이터의 중복을 허용하지 않음.
구현 클래스 : Hash, TreeSet 등
Map : 키(Key)와 값(Value)의 쌍으로 이루어진 데이터의 집합
순서는 유지되지 않으며, 키는 중복을 허용하지 않고, 값을 중복을 허용
구현 클래스 : HashMap, TreeMap. Hashtable, Properties 등
키(Kye) 란, 데이터 집합중에서 어떤 값(value)을 찾는데 열쇠(Key)가 되므로
키(Kye) 는 중복을 허용하지 않음
List
배열과 비슷하지만 배열보다 편리한 기능을 많이 가지고 있음.
배열의 경우 크기를 한번 지정하면 사이즈가 고정이되어 변경할 수 가 없지만
리스트의 경우 자료를 넣는만큼 자동적으로 사이즈가 늘어나기 때문에 동적으로 활용하기에 유용함.
ArrayList
컬렉션 프레임워크에서 가장 많이 사용되는 컬렉션 클래스
특징: List인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용함
Object배열을 이용하여 데이터를 순차적으로 저장
배열에 순서대로 저장되며, 배열에 더 이상 저장할 공간이 없으면 보다 큰 새로운 배열을 생성해서
기존의 배열 내용을 새로운 배열로 복사한 다음에 저장
예제) List 메서드 활용1
package etc;
import java.util.*;
public class MySample1201 {
public static void main(String[] args) {
//ArrayList
ArrayList list1 = new ArrayList(10);
list1.add("A");
list1.add("C");
list1.add("E");
list1.add("D");
System.out.println("초기상태 : ");
System.out.println(list1);
System.out.println("인덱스 1에 B 추가");
list1.add(1, "B");
System.out.println(list1);
System.out.println("인덱스2에 값 삭제");
list1.remove(2);
System.out.println(list1);
System.out.println("인덱스2번쨰 위치 값 : " + list1.get(2));
System.out.println();
ArrayList list2 = new ArrayList(10);
list2.add(new Integer(5));
list2.add(new Integer(4));
list2.add(new Integer(2));
list2.add(new Integer(0));
list2.add(new Integer(1));
list2.add(new Integer(3));
System.out.println("list2 : " + list2);
ArrayList list3 = new ArrayList(list2.subList(1, 4));
print(list2,list3);
Collections.sort(list2);
Collections.sort(list3);
print(list2,list3);
System.out.println("list2.containAll(list3) : " + list2.containsAll(list3)); // list2.containsAll(list3) : list2안에 list3의 요소가 있는가 return : boolean
list3.add("B");
list3.add("C");
list3.add(3,"A");
print(list2, list3);
list3.add(3,"AA");
print(list2,list3);
System.out.println("list2.retainAll(list3) : " + list2.retainAll(list3)); //list2 에서 list3 와 겹치는요소만 남기고 삭제
print(list2,list3);
//list3에서 list2에 포함된 객체 삭제
int i;
for(i = list2.size()-1; i >=0; i--)
{
if(list2.contains(list3.get(i)))
{
list3.remove(i);
}
}
print(list2,list3);
}
static void print(ArrayList list2, ArrayList list3)
{
System.out.println("list2 : " + list2);
System.out.println("list3 : " + list3);
System.out.println();
}
}
출력

예제) List 메서드 활용2
package etc;
import java.util.*;
public class MySample1201_2 {
public static void main(String[] args) {
final int LIMIT = 10;
String source = "0123456789abcdefghijklmn";
int length = source.length();
System.out.println("length : " + length);
List list = new ArrayList((length/LIMIT)+10);
List list2 = new ArrayList();
int i;
for(i = 0; i < length; i++)
{
if(i + LIMIT < length)
{
list.add(source.substring(i, i + LIMIT));
}
else
{
list.add(source.substring(i));
}
}
System.out.println("list.size() : " + list.size());
for(i = 0; i < list.size(); i++)
{
System.out.println(list.get(i));
}
}
}
출력

Stack, Queue(자료구조)
스택은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO
큐는 처음에 저장한 데이터를 가장먼저 꺼내게 되는 FIFO
예제) Stack,Queue 자료구조 실습
package etc;
import java.util.*;
public class MySample1201_5 {
public static void main(String[] args) {
//Stack, Queue
Stack st = new Stack();
Queue q = new LinkedList(); //Queue인터페이스의 구현체인 LinkedList사용
st.push("0");
st.push("1");
st.push("2");
q.offer("0");
q.offer("1");
q.offer("2");
System.out.println("Stack() ============");
while(!st.empty())
{
System.out.println(st.pop());
}
System.out.println("Queue() ============");
while(!q.isEmpty())
{
System.out.println(q.poll());
}
}
}
출력

'JAVA' 카테고리의 다른 글
| 2022.11.29 JAVA 24일차 Object 클래스, String 클래스, Calender클래스, SimpleDateFormat (0) | 2022.11.29 |
|---|---|
| 2022.11.28 JAVA 23일차 예외처리(try ~ catch ~ finally)2 (0) | 2022.11.28 |
| 2022.11.25 JAVA 22일차 예외처리(try ~ catch ~ finally) (0) | 2022.11.25 |
| 2022.11.24 JAVA 21일차 인터페이스 (0) | 2022.11.24 |
| 2022.11.23 20일차 Vector클래스, 추상화클래스 (0) | 2022.11.23 |