1. The collections framework
1.1 collection
- java.util 패키지
- collection = 자료구조 객체
- 자바 collection은 collections 프레임워크에 속한 것
- 이미 생성되어 있는 자료 구조 사용 가능
- 자료구조 조작을 위한 메소드 인터페이스 사용 가능
2. Wrapper Classes
- primitive 데이터타입들은 그에 해당하는 wrapper 클래스를 가지고 있음
- 원시 데이터에 대한 객체 버전을 제공하는 wrapper 클래스
2.1 Autoboxing and Auto-Unboxing
public class Boxing{
public static void main(String[] args){
// boxing (원시 데이터 -> wrapper class)
float f = 125.3f;
Float fObject = new Float(); // or 그냥 f 대입
int i = 23;
Integer iObject = new Integer(); // or 그냥 i 대입
// unboxing
int j = iObject;
}
}
3. Lists
- sequence
- Collection 상속
- 중복 요소를 가질 수 있음
- 메소드
- 인덱스로 요소 조작
- 요소 범위 조작
- 요소 검색
- ListIterator를 이용해서 요소에 접근
- List 구현체
- ArrayList
- LinkedList
- Vector
- Cont.
- ArrayList와 Vector 클래스는 List의 사이즈를 조절할 수 있는 배열 구현체 -> 요소 삽입 비효율적
- Vector는 디폴트로 동기화되고 ArrayList는 되지 않음
- vector -> 멀티스레딩 지원
- ArrayList가 better, 더 빠름
- LinkedList -> 요소 삽입 삭제 효율적
- ArrayList와 Vector 클래스는 List의 사이즈를 조절할 수 있는 배열 구현체 -> 요소 삽입 비효율적
3.1 ArrayList and Iterator
- add : 삽입
- size : 요소 개수 반환
- get : 특정 인덱스에 있는 요소 반환
- 다이나믹, 사이즈 지정 X
- Iterator
- 리스트를 traverse할 수 있는 포인터
import java.util.*;
public class TestBoxing {
public static void main(String[] args) {
Vector dataStructure = new Vector<String> ();
dataStructure.add("Hello");
String array[] = {"world!", "Java", "Interesting"};
for (String s : array) {
dataStructure.add(s);
}
// print all elements of the vector
for(int i = 0;i<dataStructure.size();i++) {
System.out.println(dataStructure.get(i));
}
// print all elements of the vector using iterator
ListIterator e = dataStructure.listIterator(); // pointer
System.out.println("-------------------");
while(e.hasNext()) { // update / write
String currentValue = (String) e.next();
e.set(currentValue+"++");
}
//e = dataStructure.listIterator(); // reset the pointer
while(e.hasPrevious()) { // read
System.out.println(e.previous());
}
}
}
3.2 LinkedList
4. Collections framework Algorithms
Collections. *
- sort : 정렬
- reverse : 요소 순서 반대로
- shuffle : 순서 랜덤으로 섞기
- copy : 특정 배열을 빈 배열에 복사
- fill : 배열을 두번째 파라미터 값으로 전부 채우기
- binary search
- frequency
- disjoint
- min
- max
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Arrays;
import java.util.Collections;
public class AlgorithmsTest {
public static void main( String[] args )
{
String[] suits = { "Hearts", "Diamonds", "Clubs", "Spades" };
// Create and display a list containing the suits array elements
List< String > list = Arrays.asList( suits ); // create List
System.out.printf( "Unsorted array elements: %s\n", list );
Collections.sort( list ); // sort ArrayList
System.out.println("Hollo thore\n".replace('o', 'e')); //returns
Collections.shuffle(list);
System.out.printf( "Shuffle array elements: %s\n", list );
String[] suitsCopy = new String [4];
List< String > listCopy = Arrays.asList(suitsCopy);
Collections.copy(listCopy, list);
System.out.printf( "List Copy elements: %s\n", listCopy );
List< String > listFill = Arrays.asList(suitsCopy);
Collections.fill(listFill, "R");
System.out.printf( "List Fill elements: %s\n", listFill );
int index = Collections.binarySearch(list, "Spades");
System.out.printf( "Element Spades exists in the List at index: %d\n", index );
int frequancy = Collections.frequency(listFill, "R");
System.out.printf( "the repetition of R in the listFill is: %d\n", frequancy );
boolean disjoint = Collections.disjoint(list, listFill);
System.out.printf( "The disjoint of list and listFill is %b\n", disjoint );
} // end main
} // end class
5. Stack
- java.util
- vector 클래스 상속
// Fig. 20.14: StackTest.java
// Stack class of package java.util.
import java.util.Stack;
import java.util.EmptyStackException;
public class StackTest
{
public static void main( String[] args )
{
Stack< Number > stack = new Stack< Number >(); // create a Stack
// use push method
stack.push( 12L ); // push long value 12L
System.out.println( "Pushed 12L" );
printStack( stack );
stack.push( 34567 ); // push int value 34567
System.out.println( "Pushed 34567" );
printStack( stack );
stack.push( 1.0F ); // push float value 1.0F
System.out.println( "Pushed 1.0F" );
printStack( stack );
stack.push( 1234.5678 ); // push double value 1234.5678
System.out.println( "Pushed 1234.5678 " );
printStack( stack );
// remove items from stack
try
{
Number removedObject = null;
// pop elements from stack
while ( true )
{
removedObject = stack.pop(); // use pop method
System.out.printf( "Popped %s\n", removedObject );
printStack( stack );
} // end while
} // end try
catch ( EmptyStackException emptyStackException )
{
System.out.println("Finished");
} // end catch
} // end main
// display Stack contents
private static void printStack( Stack< Number > stack )
{
if ( stack.isEmpty() )
System.out.println( "stack is empty\n" ); // the stack is empty
else // stack is not empty
System.out.printf( "stack contains: %s (top)\n", stack );
} // end method printStack
} // end class StackTest
6. PriorityQueue
- Queue 인터페이스 상속
- offer
- poll
- peek
- clear
- size
7. Set
- 중복 X
- 자동 정렬
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class TestSet {
public static void main(String[] args) {
Set<Integer> setDataStructure = new HashSet<Integer>();
setDataStructure.add(12);
setDataStructure.add(8);
setDataStructure.add(12);
setDataStructure.add(9);
setDataStructure.add(1);
for (Integer i : setDataStructure) {
System.out.println(i);
}
}
}
References
- 성균관대학교 소프트웨어학과 타메르 교수님 <자바 프로그래밍 실습>
'프로그래밍 언어 > Java' 카테고리의 다른 글
Java) 파일 전체 내용을 문자열(String)로 가져오기 (0) | 2021.07.01 |
---|---|
Week14) Java Programming Lab : Socket Programming (0) | 2021.05.28 |
Week11) Java Programming Lab : File I/O (0) | 2021.05.05 |
Week10) Java Programming Lab : Multithreading (0) | 2021.04.30 |
Week9) Java Programming Lab : Exception Handling (0) | 2021.04.19 |