java.util
날짜와 시간을 관리하는 클래스를 알아보자
배열이 다른 언어에 비해 자바는 잘 사용하지 않는다.
맘만 먹으면 안쓸수도 있다.
왜냐하면 collection 클래스에서 배열과 비슷하지만 더 쉬운 방법으로
기능을 제공하기 때문...
인터페이스의 최고 조상 Collection<E>
Comparator<T> : 정렬을 위한... sort 메소드를 구현하고자 할때
List<E>
- 데이터 저장 순서가 있다.
- 중복값을 허용한다.
- ArrayList, Stack
import java.util.ArrayList;
class Test
{
public static void main(String[] args)
{
ArrayList list = new ArrayList();
list.add("hello");
list.add(100);
list.add(5.7);
//add는 추가
System.out.println(list);
//list의 toString을 보여주는것
list.add(2,"korea");
//첫번째 매개변수는 index번호임
System.out.println(list);
list.set(2,"한국");
//set은 변경
System.out.println(list);
System.out.println("list.get(0) : " + list.get(0));
//get은 값 추출
}
}
class Test
{
public static void main(String[] args)
{
ArrayList list1 = new ArrayList(10);
list1.add(new Integer(5));
list1.add(new Integer(4));
list1.add(new Integer(2));
list1.add(new Integer(0));
list1.add(new Integer(1));
list1.add(new Integer(3));
//list1 : 5,4,2,0,1,3
ArrayList list2 = new ArrayList(list1.subList(1,4));
//list2 : 4,2,0
print(list1, list2);
Collections.sort(list1);
Collections.sort(list2);
//오름차순 정렬
print(list1, list2);
System.out.println("list1.containsAll(list2) : " + list1.containsAll(list2));
//containsAll() : list2가 list1에 완전히 포함되는가? : true리턴!
list2.add("B");
list2.add("B");
list2.add(3,"AA");
print(list1, list2);
//list1 : 5,4,2,0,1,3
//list2 : 0, 2, 4, AA, B, B
System.out.println("list1.containsAll(list2) : " + list1.contains(list2));
//완전 포함이 아니기 때문에 false 리턴!
print(list1, list2);
System.out.println("list1.size() : " + list1.size());
System.out.println("list2.size() : " + list2.size());
for (int i=5;i>=0;i--)
{
if(list1.contains(list2.get(i)))
list2.remove(i);
}
//contains는 해당 원소1개가 있는가?를 측정함
//list2에 있는 원소중에 list1에 있는 원소라면 제거하는 루프
print(list1, list2);
}//main
static void print(ArrayList list1, ArrayList list2)
{//list1, list2를 출력하는 메소드
System.out.println("list1 : " + list1);
System.out.println("list2 : " + list2);
System.out.println();
}
}
어레이 리스트는 순차적으로 접근하여 데이터를 추가.삭제하는 방식
링크드리스트는 직접적으로 접근, 속도는 빠름, 하지만 약간 무겁다...
메서드 사용방법은 어레이 리스트와 거의 비슷
Set<E> (리스트의 반대 개념)
- 데이터 저장 순서가 없다.
- 중복값을 허용하지 않는다.
- HashSet, TreeSet
import java.util.*;
class Tv
{
}
class Test
{
public static void main(String[] args)
{
HashSet set = new HashSet();
set.add("abc");
set.add("abc");
set.add(new Tv());
set.add(new Tv());
System.out.println(set);
// abc는 new로 생성하지 않았고 Tv는 new로 생성했기때문에 차이가 있음
}
}
트리셋
값이 중복되지는 않지만 정렬되어 삽입되는 것이 특징
따라서 무겁고 느림
따라서 잘 사용하지 않고 헤쉬셋을 사용한뒤 필요할때 정렬메소드를 사용하는 식으로 사용한다.
스케너 클래스
Scanner class
Scanner scan = new Scanner(System.in);
scan.nextLine();
//문자열을 입력 받는다.
import java.util.*;
class Test
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String input = "";
do
{
System.out.print("값을 입력하세요(Q를 입력하면 종료) : ");
input = scan.nextLine();
System.out.println("입력 값은"+input+"입니다");
}
while (!input.equalsIgnoreCase("Q"));
System.out.println("종료합니다.");
}
}
SortedMap<K, V>
- 키(key), 값(value) 쌍을 이룬다.
- 키의 중복은 허용되지 않으며, 값의 중복은 허용한다,
- 저장 순서가 없다.
- HashMap, TreeMap
map
키, 벨류로 입력값을 받음
키의 중복은 허용되지 아니한다. 값의 중복은 가능
키가 중복된다면 덮어 쓰기가 된다.
해시맵이엑스1
해시맵이에스2 가 중요
ArrayList의 API의 메소드 개요를 보면 add (E e) 형식이다.
제너릭 방식이란?
<타입>을 정해주는것
ArrayList<String> list = new ArrayList<String>();
원래는 오브젝트로 리턴되지만, 리턴 또한 제너릭 타입으로 리턴된다. 여기서는 String으로 될것!
HashMap<String, Integer> map = new HashMap<String, Integer>();