'C/Java'에 해당되는 글 59건

  1. 2007.11.06 컬렉션 클래스 > ArrayList 클래스 by 청웨일
  2. 2007.11.06 컬렉션 클래스 by 청웨일
  3. 2007.11.06 컬렉션 by 청웨일
  4. 2007.11.06 자바의 자료구조 by 청웨일
  5. 2007.11.06 String 클래스 / StringBuffer 클래스 / StringTokenizer 클래스 by 청웨일

* java.util.ArrayList;



import java.util.ArrayList;
import java.util.Iterator;

//http://memolog.blog.naver.com/kkochi82/34


public class ArrayListEx2 {
 public static void main(String[] args) {
  ArrayList al = new ArrayList();
  //ArrayList 인스턴스 생성
 
  //항목 추가
  al.add(new Integer(1));
  al.add(new Integer(2));
  al.add(new Integer(3));
  al.add(new Integer(4));
  al.add(new Integer(5));
  al.add(new Integer(6));
  al.add(new Integer(7));
  al.add(new Integer(8));
  al.add(new Integer(9));
  al.add(new Integer(10));
 
  for(int i=0; i<al.size(); i++) {
   System.out.println(i + "=" + al.get(i));
  }
 
  System.out.println("5번 제거후 66으로 재설정");
 
  al.remove(5);    //5번 인덱스 요소 제거
  al.set(5,new Integer(66));  //5번 인덱스 값 설정
 
  System.out.println("재설정 후 요소들 출력");
 
  //각 요소들 출력
  for(Iterator i = al.iterator(); i.hasNext();) {
   Integer integer = (Integer)i.next();
   System.out.println(integer);
  }
 }
}



출력 :


0=1
1=2
2=3
3=4
4=5
5=6
6=7
7=8
8=9
9=10
5번 제거후 66으로 재설정
재설정 후 요소들 출력
1
2
3
4
5
66
8
9
10

Posted by 청웨일

컬렉션 클래스

C/Java : 2007. 11. 6. 15:37

*java.util패키지


ArrayList

- java.util.ArrayList;

- 크기가 증가 할수 있는 배열

- 요소들의 특정한 개수를 유지하거나 비어있는 생태로 초기화될 수 있다.

- 추가적인 적재를 유지하는 것이 자유롭다.

- java.util.Collection에서 파생된 값으로 초기화될 수 있다.

- 메소드

 add(Object o) : 리스트의 끝에 객체를 추가한다.
 add(int index, Object o) : 지정된 인덱스에 요소 추가
 clear() : 리스트로부터 모든 요소를 제거한다.
 contains(Object o) : 만약 지정된 객체가 리스트에 존재하면 true를 반환, 아니면 false
 get(int index) : 지정된 인덱스에 있는 요소를 반환
 remove(int index) : 지정된 인덱스에 있는 요소를 제거
 set(int index, Object o) : 지정된 인덱스에 있는 요소를 설정
 size() : 리스트에 있는 요소의 개수를 반환

예제 : http://blog.naver.com/kkochi82/140042442933


Vector

- java.util.Vector;

- 크기가 증가할 수 있는 배열

- 요소의 특정한 개수를 유지하기 위해 초기화될 수 있다.

- 임의의 증가율은 지정될수 있고 빈 상태로 초기화 가능

- 추가적인 저장을 위해 크기를 자유롭게 증가 가능

- java.util.Collection에서 파생된 값으로 초기화될 수 있다.

- 메소드

 add(Object o) : 벡터의 마지막 위치에 객체 추가
 add(int index, Object o) : 지정된 인덱스에 요소 추가
 clear() : 리스트에 있는 모든 요소 제거
 contains(Object o) : 리스트에 지정 객체가 있으면 true반환, 아니면 false
 elementAt(int index) : 지정된 인덱스에 있는 요소 반환
 get(int index) : 지정된 인덱스에 있는 요소 반환
 indexOf(Object o) : Vector에 있는 지정된 객체의 인덱스 반환
 insertElementAt(Object o, int index) : 지정 인덱스의 요소 반환
 isEmpty() : Vector가 비어있으면 true반환
 remove(int index) : 지정 인덱스의 요소 제거
 set(int index, Object o) : 지정 인덱스의 요소 설정
 setElementAt(Object o, int index) : 지정 인덱스의 요소 설정
 size() : 리스트에 있는 요소의 개수 반환


LinkedList

- java.util.LinkedList;

- 연결된 리스트를 구현

- 비어있는 상태 또는 현재 존재하는 컬렉션으로부터 초기화 될수 있다.

- 리스트에 있는 요소에 임의 접근이 가능한 기능이 제공되지만 임의 접근한 객체의 위치를 정하기 위해

  탐색을 해야 하기 때문에 성능은 경우에 따라 달라진다.

- 메소드

 add(Object o) : 리스트의 마지막 위치에 객체를 추가

 add(int index, Object o) : 지정 인덱스에 요소 추가

 addFirst(Object o) : 리스트의 시작 위치에 객체를 추가

 addLast(Object o) : 리스트의 끝 위치에 객체를 추가

 clear() : 리스트의 모든 요소 제거
 contains(Object o) : 리스트에 지정 객체가 있으면 true, 아니면 false

 elementAt(int index) : 지정된 인덱스에 있는 요소 반환

 get(int index) : 지정된 인덱스에 있는 요소 반환

 getFirst() : 리스트의 첫 번째 요소 반환

 getLast() : 리스트의 마지막 요소 반환

 indexOf(Object o) : Vector에 있는 지정된 객체의 인덱스 반환
 insertElementAt(Object o, int index) : 지정 인덱스에 요소 추가
 isEmpty() : Vector가 비어있으면 true반환

 remove(int index) : 지정 인덱스의 요소 제거

 removeFirst() : 리스트의 첫번째 요소를 반환하고 그 요소 제거

 removeLast() : 리스트의 마지막 요소를 반환하고 그 요소 제거

 set(int index, Object o) : 지정 인덱스에 요소 설정
 size() : 리스트의 요소 개수 반환


Steck

- java.util.Steck;

- 스택 자료구조 구현

- 빈 상태로만 생성가능, 이미 존재하는 컬렉션으로 초기화 불가

- 메소드

 empty() : 만약 스택이 비어있으면 true 반환
 peek() : 스택으로부터 제거하지 않은 채 스택의 top에 있는 객체를 반환
 pop() : 스택의 top에 있는 객체를 반환하고 요소 제거
 push(Object o) : 스택의 top에 있는 객체를 추가


HashSet

- java.util.HashSet;

- 유일한 요소를 포함하고 있는 Set의 수학적인 개념을 구현

- 현재 존재하는 컬랙션에 의해서 초기화 될수 있다.

- 임의의 적재 계수(필요할때 얼마나 증가할지에 대한 값)를 갖는 지정된 크기로 초기화되거나

  비어있는 상태로 초기화 가능

- 메소드

 add(Object o) : Set에 요소 추가
 clear() : Set에 있는 모든 요소 제거

 contains(Object o) : Set에 지정한 객체가 있으면 true를 반환

 isEmpty() : Set이 비어있으면 true를 반환
 iterator() : Set에 있는 값에서 반복할 반복자 반환
 remove(Object o) : 지정 요소를 Set에서 제거
 size() : Set에 있는 요소의 개수 반환


TreeSet

- java.util.TreeSet;

- 유일한 요소를 가진 Set의 수학적인 개념을 구현

- 현재 존재하는 컬렉션에 초기화 가능

- 다른 SortedSet의 값으로 초기화 가능

- Comparator : 두개의 객체를 정렬하는 동안 비교하는 방법으로 정의한 인터페이스를 구현한 클래스

- 위의 방법을 사용해 초기화 가능

- 빈 상태로 초기화 가능

- 메소드

 add(Object o) : Set에 요소 추가
 clear() : Set에 있는 모든 요소 제거
 contains(Object o) : Set에 지정 요소가 있으면 true 반환

 first() : Set에서 가장 낮은 값을 갖는 요소 반환

 last() : Set에서 가장 큰 값을 갖는 요소 반환

 isEmpty() : Set이 비어있으면 true 반환
 iterator() : Set에 있는 값에서 반복자를 반환
 remove(Object o) : 지정 요소를 Set에서 제거
 size() : Set에 있는 요소 개수 반환


HashMap

- java.util.HashMap;

- 값에 키들이 매핑되도록 구현

- 현재 존재하는 Map으로 초기화, 임의 적재계수를 갖는 지정된 크기로 초기화, 빈 상태로 초기화 가능

- 해시 테이블에는 순서가 없다.

- 메소드

 clear() : Map에서 모든 요소 제거

 constainsKey(Object key) : 만약 Map이 key를 포함하면 true 반환

 constainsValue(Object value) : 만약 Map이 value를 포함하면 true 반환

 get(Object key) : 지정된 키와 연관된 값을 반환
 isEmpty() : 만약 Map이 비어있으면 true를 반환
 keySet() : Map에 있는 키들을 반환

 put(Object key, Object value) : Map에 키와 값의 쌍을 추가

 remove(Object key) : Map에 지정된 key를 갖는 키와 값을 제거

 size() : Map에 있는 키와 값의 개수를 반환


TreeMap

- java.util.TreeMap;

- 값에 키들을 매핑하여 구현

- 현재 존재하는 Map으로 초기화, Comparator를 사용한 초기화 가능

- 다른 SortedMap의 값을 포함하여 초기화(키를 분류한 Map의 유도) 가능

- 빈 상태로 초기화 가능

-메소드

 clear() : Map에서 모든 요소 제거

 constainsKey(Object key) : 만약 Map이 key를 포함하면 true 반환

 constainsValue(Object value) : 만약 Map이 value를 포함하면 true 반환

 get(Object key) : 지정된 키와 연관된 값을 반환
 isEmpty() : 만약 Map이 비어있으면 true를 반환
 keySet() : Map에 있는 키를 Set으로 반환

 put(Object key, Object value) : Map에 키와 값의 쌍을 추가

 remove(Object key) : Map에 지정된 key를 갖는 키와 값의 쌍을 제거

 size() : Map에 있는 키와 값의 개수를 반환





Posted by 청웨일

컬렉션

C/Java : 2007. 11. 6. 15:36

1) List 인터페이스

- java.util.List


 List 클래스 : 설명

 ArrayList

요소들을 인덱싱된 컬렉션으로 표현하는 배열과 유사한 개념이다.

배열리스트가 미리 결정된 크기를 갖지 않고 필요한 만큼 증대할 수 있다.

 Vector

ArrayList와 거의 동일하다.

다중 스레드 애플리케이션에서 안전하다.

 LinkedList

연결리스트의 기능을 구현한다.

리스트의 시작 또는 끝에 추가, 삭제

큐 자료구조에서 설명한 기능성을 허용한다.

 Stack

스택 자료구조의 기능성을 실현하기 위해  Vector를 변경한 것이다.


2) Set 인터페이스

- 유일한 요소들의 컬렉션

- 수학적으로 설정한 추상화 모델

HashSet

TreeSet

 해시테이블에 의해 제공되는 세트

해시에 의해 설정된 자료는 명령받지 않는다.

세트로부터 검색된 요소의 NULL값과 순서를

포함하고 있지만 반드시 일관성이 있다고

보장할 수 없다.

 트리에 의해 제공되는 세트

TreeSet에 있는 데이터는 명령받는다.

TreeSet로부터 검색된 요소들의 순서는

오름차순이 되도록 보장받는다.


3) Map 인터페이스

- Map은 키와 값으로 된 객체이고 모든 키는 유일하다.

- Map으로부터 키는 Set인터페이스를 구축하는 클래스로서 얻어질 수 있다.


 HashMap

 TreeMap

 해시테이블에 키의 컬렉션을 유지한다.

키는 특별한 순서가 없고,

시간동안 일관성이 없다.

 트리 내에 키 컬렉션을 유지한다.

키의 순서는 오름차순이다.


4) Iterators 인터페이스

- 컬렉션을 탐색하기 위해 사용되는 인터페이스

- 각각의 컬렉션 클래스는 Iterator 클래스의 인스턴스를 반환하는 iterator() 메소드를 호출한다.

- 각 컬렉션 클래스가 데이터에 접근하기 위한 독점적인 메커니즘을 제공하더라도 각각 iterator를 지원한다. 이는 한개의 일관된 메커니즘에 어떠한 컬렉션 클래스를 사용하는 것도 가능하게 한다.


//  hashNext() : 만약 컬렉션에 더 많은 요소가 있으면 true를 반환

//  next() : 컬렉션 내에 있는 다음 요소를 반환하는 메소드

//  remove() : iterator에 의해 반환된 마지막 요소를 제거한다.

Posted by 청웨일

자바의 자료구조

C/Java : 2007. 11. 6. 15:31

- 객체를 유지하고 객체를 추가, 삭제, 검색하기 위한 메커니즘을 제공하는 컨테이너

- 컨테이너를 다양하게 구성할수 있고, 각각 특수한 목적을 제공한다.


*컬렉션 클래스

http://blog.naver.com/kkochi82/140042374751


* 자세한 개념은 C자료구조를 참조한다.


1) 배열 자료구조

- 가장 단순한 자료구조, 고정된 크기를 갖는다.(새로운 배열요소를 추가할 수 없다.)

- 0부터 시작하는 인덱스를 사용해 각각의 요소에 직접 접근

- 각각의 셀은 객체 자료형(객체 참조형)으로 되어있다.

- 배열요소를 제거해도 배열 요소를 이동시키는 메커니즘이 없다.


ex)

class Employee {
 String name;
 Employee(String n) { name = n; }
}
public class ArrayListEx {
 public static void main(String[] args) {
  Employee[] employees = new Employee[10];   //배열 정의
  Employee steve = new Employee("Steve");
  employees[0] = steve;
  //탐색
  for(int index = 0; index<employees.length; index++) {
   if(employees[index].name.equalsIgnoreCase("Steve")) {
    System.out.println("Steve is employee at index : " + index);
    break;
   }
  }
  System.out.println(employees[0].name);
  //삭제
  employees[0] = null;
  System.out.println("Steve is fire");
 }
}


2) 연결리스트 자료구조

-배열이 가진 고정된 크기의 문제를 해결하고 객체의 추가, 삭제 방법을 제공한다.

- 연결리스트는 노드의 집합니다.

- 각 노드는 객체와 다음 노드를 참조하는 정보를 가지고 있다.



연결리스트 :

사용자 삽입 이미지


노드추가 :

사용자 삽입 이미지


노드삽입 :

사용자 삽입 이미지


노드삭제 :

사용자 삽입 이미지


- 자바에서는 java.util.LikedList 클래스를 통해 연결리스트를 이미 구현해 놓았다.

- 연결리스트는 노드에 대한 임의 접근이 안되고 리스트의 시작위치와 끝위치부터 참조할수 있다.

- 연결리스트는 노드를 반복적으로 삽입하거나 삭제할때 좋은 구조지만

   객체의 검색이나 다르게 정렬된 순서의 객체를 출력하는 것에는 좋지 않다.

3) 스택 자료구조

- 맨 위에 추가할수 있지만 임의 위치에 추가 할수 없다.

- 맨 위에 있는 데이터를 볼수있지만 그 아래것은 볼수 없다.

- 맨 위의 자료는 꺼낼수 있지만 중간에 있는 자료는 꺼낼 수 없다.

- 삽입연산을 위해서는 지정 위치에 다다를때까지 데이터들을 전부 꺼낸다음 새로운 데이터를 넣고

  꺼냈던 데이터들을 다시 집어 넣는 과정을 거친다.(중간 위치 데이터의 삭제 과정도 같다)


//push : 스택의 맨 위에 객체를 올려놓는다.

//peek : 스택의 맨 위에 있는 객체를 읽는다.

//pop : 스택의 맨 위에 있는 객체를 꺼낸다.


4) 큐 자료구조

- 큐의 끝에 아이템을 추가할 수 있다.

- 큐의 앞에 있는 아이템을 제거할 수 있다.


5) 해시 테이블 자료구조

- 테이블에 있는 수치 값을 계산하여 아이템을 참조하도록 만든 자료구조

- 테이블은 해시코드와 아이템으로 구성된 두개의 열을 가지고 있다.

- 삽입 : 해시코드를 사용해 해시테이블의 인덱스 위치에 객체 삽입

- 검색 : 해시코드를 계산하여 테이블에서 직접 찾는다.

- 충돌 : 두 객체가 같은 해시 코드로 계산되면 충돌이 발생한다.

- 해시테이블은 충돌을 피하기 위해 데이터의 최대 크기보다 20%정도 큰 크기를 갖도록 한다.

- 충돌을 해결하기 위해 해결 알고리즘을 쓸수 있다.


6) 트리 자료구조

- http://blog.naver.com/kkochi82/140041426974 참조

- 트리에서 아이템을 추가하거나 삭제하는 연산은 간단하지 않다.

- 빠른 검색능력을 가지고 있다.

- 삽입과 삭제는 최소화하고 검색이 빈번할때 가장 적합한 구조이다.


Posted by 청웨일
 문자는 작은 따옴표로 문자열은 큰 따옴표로 묶는다.

- 일정 시간 동안 문자열을 메모리에 보관하기 위해 문자열 테이블을 유지한다.

- String클래스에 있는 문자열을 수정할 수 없다.

- 새로운 String객체를 생성해 새로운 값을 저장할 수 있다.

- 새로운 것을 생성했는데 이미 존재하는 값과 동일하면 이미 존재하는 문자열을 참조한다.

- 문자열 값의 중복을 최소화 하도록 최적화 되어 있다.

- 변경되지 않는 문자열의 한계 때문에 자바는 문자열 테이블을 우회하여 관리할 수 있는 클래스를 제공

└ StringBuffer클래스 : 문자열의 집합을 유지하고, 문자열에 문자/다른문자를 추가, 삽입할수 있다.


1) String클래스

- 문자열 관리, 수정 기능을 제공한다.

사용자 삽입 이미지

사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

출처 : http://cafe.naver.com/javachobostudy.cafe


2) StringBuffer클래스

- String클래스로 변환 가능

- 버퍼의 크기를 지정하거나 String을 사용해 버퍼를 생성가능

- 문자열을 갖지 않는 빈 버퍼을 생성 가능

- StringBuffer인스턴스에 저장된 문자열은 변경이 가능

3) StringTokenizer 클래스

생성자

설명

 StringTokenizer(String str)

주어진 문자열을 토큰으로 분리해서 StringTokenizer 생성한다. 기본 분리자는 화이트 문자

 StringTokenizer(String str, String delim)

주어진 문자열을 토큰으로 분리해서 StringTokenizer 생성한다. 분리자는 매개변수로 전달된 dilim

 StringTokenizer(String str, String delim, boolean returnDelims)

주어진 문자열을 토큰으로 분리해서 StringTokenizer 생성. 분리자는 매개변수로 전달된 delim,

만약 returnDelim 값이 true이면 분리자도 토큰에 포함

메소드

설명

 int countTokens()

 토큰의 개수를 반환

 boolean hasMoreElements()

 hasMoreTokens메소드와 같은 값 반환

 boolean hasMoreTokens()

 StringTokenizer 객체의 문자열로부터 사용 가능한 토큰이 있는지 검사

 Object nextElement()

 nextToken 메소드와 같은 값 반환

단, Object 객체를 반환한다.

 String nextToken()

 다음 토큰을 반환

 String nextToken(String delim)

 현재 남아있는 문자열에서 새로운 구분자(delim)를 사용하여 토큰을 반환한다.


import java.util.*;

//StringTokenizer클래스는 String이나 StringBuffer와 같은 패키지 안에 있지 않다.

public class StringTokenizerEx {
 public static void main(String[] args) {
  String source  = "1,2,3,4,5,6,7,8,9";
  StringTokenizer st = new StringTokenizer(source, ",", false);
  while(st.hasMoreTokens()) {
   String value = st.nextToken();  

                      //nextToken()은 while문안에 한번만 쓰도록 하자.
   System.out.println(value);
  }
 }
}


Posted by 청웨일