JAVA_Collection
Collection은 여러 원소를 담을 수 있는 자료 구조이다.
다수의 데이터를 다루는 데에 필요하며, 다형성을 이용한 객체지향적 설계를 통해 표준화되어 있다. 또한 재사용성이 높은 코드를 작성할 수 있다는 장점이 있다.
Interface | 특징 |
---|---|
List | 순서가 있는 데이터의 집합으로 데이터의 중복을 허용함 구현 클래스:ArrayList, LinkedList, Stack, Vector |
Set | 순서가 없는 데이터의 집합으로 데이터의 중복을 불허함 구현 클래스:HashSet, TreeSet |
Map | Key, Value의 쌍으로 이루어진 데이터의 집합으로 순서가 없고 키 중복 불허, 값 중복 허용 구현 클래스:HashMap, TreeMap, HashTable, Properties |
List
ArrayList_객체 추가
- add(object);
public ArrayList<Object> listAdd() { // 리스트에 값 삽입
a.add("Array"); // 0번
a.add("List"); // 1번
return a;
}
ArrayList_객체 삭제
- remove(index);
public ArrayList<Object> listRemove() { // 리스트에 있는 값을 번지수를 찾아 삭제
a.remove(0); // 0 번에 있는 값을 삭제하고,
return a; // 뒤에 있던 값을 당겨 온다. List가 0 번이 됨
}
ArrayList_객체 검색
- contains(찾고자 하는 값);
해당 메서드는 대소문자를 구별한다.
public boolean listContains(Object value) {
return a.contains(value); // 파라미터를 받아 값을 확인하고 참, 거짓을 리턴함
}
ArrayList_Iterator을 통한 객체 값 출력
public void listAll() {
Iterator iter = a.iterator(); // 반복자 | 리스트에 담겨 있는 값을 반복자에게 넘김
while(iter.hasNext()) { // 다음 값이 있으면 반복한다
System.out.println(iter.next()); // 프린트문으로 현재 인덱스의 값을 출력
}
}
ArrayList_객체 검색
- contains(찾고자 하는 값);
해당 메서드는 대소문자를 구별한다.
public boolean listContains(Object value) {
return a.contains(value); // 파라미터를 받아 값을 확인하고 참, 거짓을 리턴함
}
ArrayList_객체의 길이 값
- size();
길이 값은 0이 아닌 1부터 시작하여 카운트한다.
public int listSize() {
return a.size(); // a 변수가 가리키는 리스트의 갯수를 리턴
}
ArrayList_원하는 번지에 값 넣기
- add(index, value);
번지 수는 0부터 시작한다.
public void listWantIndexAdd() { // 내가 원하는 번지에 값 넣기
a.add(1, "TBZ"); // 이렇게 넣게 되면 출력되는 값은 List TBZ Java Spring xml 순이 된다
}
ArrayList 총 코드
package jaeil.com.collection;
import java.util.ArrayList;
import java.util.Iterator;
public class list{
ArrayList<Object> a = new ArrayList<Object>();
public ArrayList<Object> listAdd() { // 리스트에 값 삽입
a.add("Array"); // 0번
a.add("List"); // 1번
a.add("Java");
a.add("Spring");
a.add("xml");
return a;
}
public Object listGet(){ // 리스트 값 받아 오기
a.get(0); // 0 번에 있는 값을 가지고 옴
return a.get(0); // 0 번에 있는 값을 리턴함
}
public ArrayList<Object> listRemove() { // 리스트에 있는 값을 번지수를 찾아 삭제
a.remove(0); // 0 번에 있는 값을 삭제하고,
return a; // 뒤에 있던 값을 당겨 온다. List가 0 번이 됨
}
public boolean listContains(Object value) {
return a.contains(value); // 파라미터를 받아 값을 확인하고 참, 거짓을 리턴함
}
public void listAll() {
Iterator iter = a.iterator(); // 반복자 | 리스트에 담겨 있는 값을 반복자에게 넘김
while(iter.hasNext()) { // 다음 값이 있으면 반복한다
System.out.println(iter.next()); // 프린트문으로 현재 인덱스의 값을 출력
}
}
public int listSize() {
return a.size(); // a 변수가 가리키는 리스트의 갯수를 리턴
}
public void listWantIndexAdd() { // 내가 원하는 번지에 값 넣기
a.add(1, "TBZ"); // 이렇게 넣게 되면 출력되는 값은 List TBZ Java Spring xml 순이 된다
}
public static void main(String[] args) {
list list = new list();
System.out.println(list.listAdd());
System.out.println(list.listRemove());
list.listWantIndexAdd();
System.out.println(list.listContains("list")); // 대소문자를 구분함
list.listAll();
System.out.println(list.listSize());
}
}
Stack
스택은 쌓는다는 의미를 가진 자료구조이며, last in first out(LIFO) 방식이 특징이다. 나중에 들어간 값이 먼저 나오는 구조이다. 정형화돼 있는 컵 안에 딱 맞는 물체를 넣어 하나씩 꺼낸다고 생각하면 된다.
Stack_객체 추가
- push(value);
public Stack<Object> stackPush(){
stack.push("Collection");
stack.push("Stack");
stack.push("Vector");
return stack;
}
Stack_객체 추가
- push(value);
public Stack<Object> stackPush(){
stack.push("Collection");
stack.push("Stack");
stack.push("Vector");
return stack;
}
Stack_객체 값 가져오기
- peek();
가장 마지막에 넣은 값을 가져온다.
public Object stackPeek(){
return stack.peek(); // 가장 마지막에 들어온 값을 리턴
}
Stack_객체 값 삭제
- pop();
가장 마지막에 넣은 값을 삭제한다.
public Stack<Object> stackPop(){
stack.pop(); // 가장 마지막에 들어온 값을 삭제
return stack;
}
Stack_Iterator를 통한 값 출력
- Iterator를 통해 값을 출력하려고 하니 LIFO이 아닌 인덱스대로 출력된다.
ArrayList를 Iterator로 출력한 것과 동일하다.
public void stackAll() {
Iterator<Object> iter = stack.iterator();
while(iter.hasNext()) { // ArrayList와 동일하게 순서대로 출력됨
System.out.println(iter.next());
}
}
Stack_For문을 통한 값 출력
- 이 방법에서는 pop을 하면 stack.size의 값이 줄기 때문에 원하는 바대로 출력되지 않는다.
public void stackAllPrint() {
for(int i=0; i<=stack.size(); i++) { // pop을 하면 사이즈가 줄기 때문에 하나가 나오지 않음
System.out.println(stack.size());
System.out.println(stack.pop()+" "+i);
}
}
Stack에서 get 메서드를 사용할 수 있고 향상된 for문으로 출력할 수도 있다.
public void stackAllPrint() {
for(int i=0; i<stack.size(); i++) { // pop을 하면 사이즈가 줄기 때문에 하나가 나오지 않음
System.out.println(stack.size());
System.out.println(stack.get(i)+" "+i);
}
for(Object o:stack){
System.out.println(o);
}
}
다만 pop으로 원래 stack의 출력 순서대로 출력하는 방법은 못 찾았다.
임시 방편으로 size에 +1을 해 주면 가능했는데 값이 커지거나 변수가 생기면 오류가 날 수도 있을 것 같다.
ArrayList와 contains, empty, size 메서드가 동일하게 사용된다.
Stack 총 코드
package jaeil.com.collection;
import java.util.Iterator;
import java.util.Stack;
public class stack {
Stack<Object> stack = new Stack<Object>();
public Stack<Object> stackPush(){
stack.push("Collection");
stack.push("Stack");
stack.push("Vector");
return stack;
}
public Object stackPeek(){
return stack.peek(); // 가장 마지막에 들어온 값을 출력
}
public Stack<Object> stackPop(){
stack.pop(); // 가장 마지막에 들어온 값을 삭제
return stack;
}
public void stackAll() {
Iterator<Object> iter = stack.iterator();
while(iter.hasNext()) { // ArrayList와 동일하게 순서대로 출력됨
System.out.println(iter.next());
}
}
public void stackAllPrint() {
for(int i=0; i<=stack.size(); i++) { // pop을 하면 사이즈가 줄기 때문에 하나가 나오지 않음
System.out.println(stack.size());
System.out.println(stack.pop()+" "+i);
}
}
public static void main(String[] args) {
stack stack = new stack();
System.out.println(stack.stackPush());
//System.out.println(stack.stackPeek());
//System.out.println(stack.stackPop());
//stack.stackAll();
stack.stackAllPrint();
}
}
Map
HashMap_객체 추가
- put(key, value);
키와 값을 넣어야 생성되며, 이미 키가 있더라도 덮어 쓰기가 가능하다.
HashMap_객체 값 가져오기
- get(key);
키에 해당하는 값을 가지고 온다.
HashMap_키, 값이 있는지 확인
- containKey(key);
- containValue(value);
HashMap_객체 삭제
- remove(key);
키와 값을 삭제한다.
HashMap_키가 없을 때 추가
- putIfAbsent(key, value);
HashMap_키가 없을 때 추가
- putIfAbsent(key, value);
HashMap_map의 크기가 0인지 확인
- isEmpty();
HashMap_key 값만 가지고 오기
- keySet();
for(String key : m.map.keySet()){
System.out.println(key); // 향상된 for문으로 key 값을 모두 가지고 오는 방법
}
HashMap_key, value 둘 다 가지고 오기
- entrySet();
for(Object value:m.map.entrySet()) {
System.out.println(value); // 키와 값을 향상된 for문으로 출력한다
}
HashMap_Value만 출력하는 방법
- 다른 방법도 있겠지만 나는 향상된 for문으로 keySet을 가지고 와서 get 안에 파라미터로 넣어 주는 방법이 가장 편했다.
for(String key:m.map.keySet()) {
System.out.println(m.map.get(key)); // 향상된 for문을 이용해 get으로 값만 출력한다
}
Set
set은 중복을 허용하지 않는다.
set은 순서를 보장해 주지 않는다.
add();를 할 때 이미 삽입돼 있는 값을 또 삽입해도 삽입되지 않는다.
Author And Source
이 문제에 관하여(JAVA_Collection), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@moodnightsummer/JAVACollection저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)