20220714 Thu
스택(LIFO)
큐 (FIFO)
리스트(LIst) !!실무에서 가장 많이 사용
-> 데이터에 순번이 존재
-> 중복 허용
Set
->데이터에 순번이 없다.(순서라는 개념x)
-> 중복 허용하지않음.
- HashSet
- treeSet
프로젝트명 : CollectionList(인터페이스)
인터페이스는 객체를 못만든다.
인터페이스는 클래스를 만들 때 사용한다.
List 인터페이스를 구현해놓은 클래스도 제공한다.
-> 그래서 객체를 사용할 때는 인터페이스가 아닌 클래스를 사용해야 쓸 수 있다.
- ArrayList(배열기반 리스트)
- LinkedList(연결기반 리스트)
package list;
import java.util.ArrayList;//arrayList 임포트되어야 사용가능함.
import java.util.List;//List 임포트해야 사용가능함.
public class List1 {
public static void main(String[] args) {
//밑에 둘 주 하나 사용 모두 가능
// ⓐ
// ArrayList<E> list = new ArrayList<>();//클래스로 객체 생성
// ⓑ
//데이터의 목록이지만.. 같은 자료형(<String>)만 들어올 수 있다.
//list 라는 이름의 통을 만든 것.
List<String> list = new ArrayList<>();//배열리스트로 객체 생성
//List<String> list = new LinkedList<>();//연결리스트로 객체 생성
//>>연결리스트로만 글자 바뀌어도 사용가능
//그 이유는? 두 개의 리스트 모두 컬렉션 인터페이스를 상속받기 때문에
//데이터 넣기(삽입)
list.add("java");//0번(주의 1번 아님)
list.add("c++");//1번
list.add("python");//2번
list.add("python");//3번
//데이터 읽기
list.get(0);//n 번째 데이터를 갖고오자
//Q) 데이터삽입은 문자열로 했는데 읽기는 정수로 하는가?
//A) 리스트의 성질 때문에, 데이터를 넣는 순서대로 순번이 매겨짐.>>>그래서 데이터를 뺄 때는 순번대로 빼기 때문에 정수형 필요함.
String a = list.get(0);
//하지만 리턴타입은 문자열이기때문에 String 문자열 자료형 필요함.
//데이터 모두 출력하기
for(int i = 0; i < list.size(); i++)//리스트도 배열과 같다. 순번이 존재하면 for문 잘 어울림.
//배열과 달리 길이는 size로 표시한다.!!
System.out.println(list.get(i));
// [콘솔창]
// java
// c++
// python
// python
//데이터 삭제하기.
list.remove(0);//삭제할 때도 몇번째 삭제할 것인지 정수형 필요함.
System.out.println(list.get(0));//c++
//주의!!
//삭제를 하면, 데이터를 사라지는 것이 아니라 바로 뒤에 있던 데이터(c++) 를 차례로 땡겨온다.
//그래서 0번째 java 를 삭제시, 1번째 였떤 c++ -> 0번째 자료가 되는것
}
}
package list;
import java.util.ArrayList;
import java.util.List;
public class List2 {
public static void main(String[] args) {
//정수가 들어가는 리스트(int x )
List<Integer> list = new ArrayList<>();//자동완성으로 무조건!! 두개 다 임포트 시켜줘야 한다.
list.add(10);
list.add(10);
list.add(10);
int r = list.get(0);
//(주의)들어가 있는 정수형 데이터 값 x
// 빼내려는 데이터가 들어있는 순번 o
//ⓐ for 문으로 출력
for(int i = 0; i< list.size(); i++) {
System.out.println(r);
}
//ⓑ for-each문으로 출력
for(int e : list ) {//(중요)!! list라는 데이터에서 뺏을 때 어떤 자료형인지가 중요 >> int( 정수 데이터)
System.out.println(r);
}
}
}
## set
package Set;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
public class Set1 {
public static void main(String[] args) {
// List<String> list = new ArrayList<>();
Set<String> set = new HashSet<>();// 리스트와 같은 형태
// set 데이터 넣기
set.add("java");
set.add("c++");
set.add("python");
set.add("c++");
// set 값 빼기( 순번이 없음 )
// set.get(); 불가능
for (String e : set) {
System.out.println(e);
// [콘솔창]
// c++
// python
// java
/////////////////////////////////////////////////////////////////////
Set<Integer> set1 = new HashSet<>();// 리스트와 같은 형태
// set 데이터 넣기
set1.add(20);
set1.add(10);
set1.add(15);
set1.add(46);
for (String e1 : set) {
System.out.println(e1);
}
//////////////////////////////////////////////////////////////////////
Set<Integer> set2 = new TreeSet<>();// Treeset 임포트하기.
set2.add(20);
set2.add(10);
set2.add(15);
set2.add(46);
for (String e1 : set) {
System.out.println(e1);
}
}
}
}