Search Results for 'Java !!!'

54 POSTS

  1. 2015.04.14 Generic_1
  2. 2015.04.12 Collection 종류 및 내용 정리
  3. 2015.04.10 Wrapper_Ex3
  4. 2015.04.10 Wrapper_Ex2
  5. 2015.04.10 WrapperClass
  6. 2015.04.10 String
  7. 2015.04.10 HashCode
  8. 2015.04.10 Equals_Ex2
  9. 2015.04.10 Equals
  10. 2015.04.10 StringBuffer_Ex2

Generic_1

Posted 2015. 4. 14. 09:42

package chap11;
import java.util.*;

// C++의 Templet 개념.
// Collection의 제네릭이 이렇게 되어있다.
class GenericEx<T>{
 T[] v;
 public void set(T[] n){
  v = n;
 }
 
 public void print(){
  for( T s : v )
   System.out.println(s);
 }
}

public class GeneracEx1 {
 public static void main(String[] args) {
  GenericEx<String> t = new GenericEx<String>();
  String[] ss = {"가","나","다"};
  t.set(ss);
  t.print();
  GenericEx<Integer> t2 = new GenericEx<Integer>();
  Integer[] ii = {1,2,3,4,5};
  t2.set(ii);
  t2.print();
 }
}

 

'Java !!!' 카테고리의 다른 글

Collection 종류 및 내용 정리  (0) 2015.04.12
Wrapper_Ex3  (0) 2015.04.10
Wrapper_Ex2  (0) 2015.04.10
WrapperClass  (0) 2015.04.10
String  (0) 2015.04.10

Collection 종류 및 내용 정리

Posted 2015. 4. 12. 19:19

인터페이스 : Collection, List, Set, Map

구현클래스

Set에 속하는 것들 : HashSet, TreeSet

List에 속하는 것들 : ArrayList, LinkedList

Map에 속하는 것들 : HashMap, TreeMap

 

Java Collection도 Iterator가 있지만 기능은 몇가지 없다.

hasNext() : 다음 값이 있는지?

next() : 다음 데이터값 리턴

remove() : 원소 삭제

get(i) : index번째 원소 가져옴, Map에서는 key값으로 data찾아옴

set(i, data) : i번째 데이터를 data로 변경

 

 

동기화 컬렉션

동기화 안됨 : ArrayList, HashMap

동기화 됨!! : Connection.synchronizedCollection(), Collections.synchronizedList(), ...Set(),.....Map을 사용 또는

ArrayList, HashMap을 래핑하면 됨.

 

1 Vector : 얘두 배열, 근데 얘는 쓰레드 동기화가 된다.옛날 1.2버전? 이다.

Vector<ClassType> dataName = new Vector<ClassType>();

dataName.add(dasdas);

 

1-1. ArrayList : Vector 개선판이다. 쓰레드 동기화 안됨.하지만 동기화 컬렉션을 사용하면됨.

가변크기를 제공한다. 가변크기 제공해도 늘어나고 변경되면 메모리 복사땜에 느리긴하지.

set으로 해당 데이터를 교체 할 수도 있고, iter.set(4,data); 4index를 data로 교체

remove로 삭제 remove(i);

기본적인 add, get 가능하고.  근데 get이 index를 넘겨야 하니. 클래스의 특정 값을 비교 후 가져와야 할땐 결국 첨부터 돌아야 된다.

그럴 빠엔 그냥 map 쓰고 key 값으로 특정 클래스의 멤버값을 넣고

data로 클래스를 박아버리는게 훨 낫겟다.

 

 

2. LinkedList : C++ list다. get으로 데이터 가져 올 수 있고, add로 맨 끝에 추가한다.

iterator로 원소 검색 도 가능하지. remove(index), size(), add(data), get(index)

while( iter.hasNext() ) 이거로 데이터 끝까지 갈 수 있다.

 

3. Map : C++의 맵이다. 키 중복은 되지만 값 중복은 불가능하다.

HashMap : 해쉬테이블 개선판이다. 대량 데이터 처리 좋다. 저장 순서가 없다. 키와 값이 대응된다.

if( isEmpty() ), if( map.containsKey(Objct key) ) 처럼 쓸수도 있다.

데이터 저장 순서는 없지만, 내부 정렬은 하고 있다.

 

 

4. Set. 중복된 원소가 없는 컬렉션. 순서도 보장 안됨.

처음 3번째 있던놈이 다음에 돌면 어디 있을지 모름.

두개의 set을 합치는 연산, 또는 차이점 이런거 할때처럼

대량 연산을 할때 조으다. set.AddAll( set2 ) 합치던지.

HashSet : HashMap을 이용하여 구현됬다. 중복 요소 추가시 false 반환한다.

TreeSet : TreeMap을 이용하여 구현됬다. 레드-블랙 트리로 되있다.

 

5. SortedSet. 위에 set과 다른점은 순서가 정해져 있다.

 

 

Hash가 붙은것은 해싱(hasing). 해시함수를 이용해서 데이터를 해시테이블에 저장하고 검색하는 기법이다. 해시함수는 데이터가 저장되어 있는 곳을 알려주기때문에 다량의 데이터 중에서 원하는 데이터를 빠르게 찾을 수 있다.

Tree가 붙은건 Tree 이진 검색 트리가 적용 되 있는 것이다.

마찬가지로 검색이 빠르다.

 

둘 차이는. 해시테이블이 저장 및 가져오는 면에서 더 빠르다.( n(1) 의 상수시간 알고리즘 ) 하지만

그 외의 용도로는 제약이 많다.

이진 검색 트리는 O( log(n) )으로 해시테이블에 비하면 느리지만. 자료가 정렬된 순서 그래도 유지된다.

해시 테이블은 정렬이 필요한 곳에서는 메모리를 정렬만큼 잡아 먹게 된다. 모바일에서 힘들어짐.

 

 

요즘은 동기화가 필요 할 때에, Collection.synchronizedCollection( Collection C )를 이용 하는게 성능상 더 좋다고 합니다. ☆

ArrayList, HashMap, TreeMap, HashSet 을 가장 많이 쓴다네. ArrayList가 압도적이긴하지만.

 

 

 

 

'Java !!!' 카테고리의 다른 글

Generic_1  (0) 2015.04.14
Wrapper_Ex3  (0) 2015.04.10
Wrapper_Ex2  (0) 2015.04.10
WrapperClass  (0) 2015.04.10
String  (0) 2015.04.10

Wrapper_Ex3

Posted 2015. 4. 10. 15:55

package chap9;

// switch 구문의 조건값으로 사용가능한 자료형
// byte  Byte
// short Short
// int  Integer
// char  Character
//
// String  jdk 7.0 이후

public class WrapperEx3 {
 public static void main(String[] args) {
  Byte s = 1; // auto Boxing
  switch( s ){
  case 1:
   System.out.println("성공");
   break;
  default :
   System.out.println("실패");
   break;
  }
 }
}

'Java !!!' 카테고리의 다른 글

Generic_1  (0) 2015.04.14
Collection 종류 및 내용 정리  (0) 2015.04.12
Wrapper_Ex2  (0) 2015.04.10
WrapperClass  (0) 2015.04.10
String  (0) 2015.04.10

Wrapper_Ex2

Posted 2015. 4. 10. 15:55

package chap9;

public class WrapperEx2 {
 public static void main(String[] args) {
  char[] data = {'A','a','4','#', ' '};
  for( int i=0 ; i<data.length ; i++ ){
   if( Character.isUpperCase( data[i] ) )
    System.out.println(data[i] + "는 대문자임");
   
   else if( Character.isLowerCase(data[i]))
    System.out.println(data[i] + "는 소문자임");
   else if( Character.isSpaceChar(data[i]) )
    System.out.println(data[i] + "는 공백임");
   else if( Character.isDigit(data[i]))
    System.out.println(data[i] + "는 숫자임");
   else
    System.out.println(data[i] + "는 일반문자임");
  }
  
  double d = 10.0/3;
  System.out.println("숫자가 아니니?" + Double.isNaN(d));
  System.out.println("무한대니?" + Double.isInfinite(1/0.0));
  
  // jdk 5.0 이후에 추가된 메서드
  int is = Integer.valueOf("500", 8);
  System.out.println(is);
  double ds = Double.valueOf("5.234");
  System.out.println(ds);
 }
}

 

'Java !!!' 카테고리의 다른 글

Collection 종류 및 내용 정리  (0) 2015.04.12
Wrapper_Ex3  (0) 2015.04.10
WrapperClass  (0) 2015.04.10
String  (0) 2015.04.10
HashCode  (0) 2015.04.10

WrapperClass

Posted 2015. 4. 10. 15:55

package chap9;

// wrapper 클래스 : 기본형 8개를 클래스화 한 클래스
//     => 기본형을 객체화 할때 사용
// 종류
// 기본형  wrapper 클래스
// boolean Boolean
// char  Character
// byte  Byte
// short Short
// int  Integer
// long  Long
// float Float
// double Double

// 기본형과 참조형은 서로 형변환되지 않는다.
// 단,
//  기본형과 wrapper 클래스는 형변환이 된다.( jdk 5.0 이후 )
//  기본형 ---> wrapper클래스 : auto Boxing
// 기본형 <--- wrapper클래스 : auto UnBoxing

public class WrapperEx1 {
 public static void main(String[] args) {
  Integer i1 = new Integer(100);
  Integer i2 = new Integer(100);
  System.out.println("i1 == i2 ?" + (i1 == i2) );
  System.out.println("i1.equals(i2)" + i1.equals(i2));
  System.out.println("i1.toString()" + i1.toString());
  System.out.println("MAX_VALUE : " + Integer.MAX_VALUE);
  System.out.println("MIN_VALUE : " + Integer.MIN_VALUE);
  
  // double 타입의 자료의 최대값 출력
  System.out.println("double의 최대값 : " + Double.MAX_VALUE);
  
  // 크기
  System.out.println("int bit :" + Integer.SIZE);
  
  // 기본형 < = wrapper 클래스
  int pi = i1.intValue(); // 5.0 이전 버전
  pi = i1; // 5.0 이후 버전( unboxing )
  
  // 기본형 <- String : 메서드 사용이 필수. String이 기본형이 아님.
  pi = Integer.parseInt("123");
  System.out.println(pi);
  
  // "12.3" => double형으로 변경
  double pd = Double.parseDouble("12.3");
  System.out.println(pd);
  
  // "123.5" -> float형으로 변경
  float pf = Float.parseFloat("123.5");
  System.out.println(pf);
  
  // 16진수로 변경도 가능.
  pi = Integer.parseInt("FF", 16);
  System.out.println(pi);
 }
}

 

'Java !!!' 카테고리의 다른 글

Wrapper_Ex3  (0) 2015.04.10
Wrapper_Ex2  (0) 2015.04.10
String  (0) 2015.04.10
HashCode  (0) 2015.04.10
Equals_Ex2  (0) 2015.04.10

String

Posted 2015. 4. 10. 15:55

package chap9;

import java.io.ObjectInputStream.GetField;

// String 클래스의 메서드 연습

public class StringEx2 {
 public static void main(String[] args) {
  String s = new String("ABCDEFGH");
  
  // charAt(4) : 4번 인덱스의 문자를 리턴
  System.out.println(s.charAt(4)); // E
  
  // compareTo() : 나의 문자 - 대상문자의 차를 리턴
  // 정렬에서 사용되는 메서드
  System.out.println(s.compareTo("abc")); // -32
  
  // IgnoreCase : 대소문자 구별없이 무시하고 문자열이 같은지?
  System.out.println(s.compareToIgnoreCase("abcdefgh")); // 0
  
  // concat : s + "abc" 두 문자열을 연결해주는 메서드
  System.out.println(s.concat("abc")); // ABCDEFGHabc
  
  // endsWith("FGH") : s 문자열의 끝이 FGH? 맞으면 true, 아니면 false
  System.out.println(s.endsWith("FGH")); // true
  
  // equals("ABCDEFGH") : "ABCDEFGH" 문자열의 내용이 같은지?
  System.out.println(s.equals("ABCDEFGH")); // true
  System.out.println(s.equalsIgnoreCase("abcdefgh")); // true
  

  String s1 = new String("This is a String");
  // 2 : i 문자의 위치(index)를 리턴, 중복일 경우 가장 앞의 index를 리턴
  System.out.println(s1.indexOf('i'));  
  System.out.println(s1.indexOf("is"));  // 2
  
  // 13 : 뒤에 넘긴 값의 index번째 부터 검색해서 index를 넘김
  System.out.println(s1.indexOf('i',7));  
  System.out.println(s1.indexOf("i",5));  // 5 : 5번 인덱스도 포함된다.

  // 5 : 찾는건 뒤에서 부터찾는데 리턴 index값은 앞에서부터 샌다.
  System.out.println(s1.lastIndexOf("is")); 
  
  // 16 : 문자열의 길이.
  System.out.println(s1.length());  
  
  // 모든 i를 Q로 바꾼다.
  System.out.println(s1.replace('i', 'Q'));
  System.out.println(s1.replace("is", "IS")); // 모든 is를 IS로 바꾼다.
  System.out.println(s1.replaceAll("is", "IS")); // 문자열 is를 IS로 바꾼다.
  
  // 시작이 해당 문자와 같으면 true, 다르면 false
  System.out.println(s1.startsWith("This"));
  
  // 5번 인덱스 부터 끝까지를 부분 문자열로 리턴
  System.out.println(s1.substring(5));
  System.out.println(s1.substring(5, 13)); // 5번부터 13-1번 까지 출력(12번 index)
  
  // 모두 소문자로 출력, 모두 대문자로 출력
  System.out.println(s1.toLowerCase());
  System.out.println(s1.toUpperCase());
  
  String s2 = "a,b,c,d,e,f,g,h";
  // split(",") : ,를 기준으로 문자열을 분리. 해당 문자열을 기준으로 문자열을 분리!!
  String[] tokens = s2.split(",");
  for( String str : tokens ){
   System.out.println(str);
  }
  
  // trim() : 양쪽의 공백을 제거. 단, 문자열 사이의 공백은 제거하지 않는다.
  System.out.println(new String("   a b c   ").trim());
  
  // valueOf : 기본형을 문자열로 변형 하는 메서드
  System.out.println(String.valueOf(true) + "123");
  System.out.println(true + "123");
  
  // 문자열 => 기본형 메서드
  System.out.println(Integer.parseInt("123") + 5);
  System.out.println(Float.parseFloat("12.3") + 10);
  
  // JDK 5.0이후 버전에서만 가능
  // %.숫자만큼 짜르고, 반올림 한다.
  // format("형식제어문자",값)
  String sf = String.format("%.2f", 12.3456);
  System.out.println(sf);
  
 }
}


 

'Java !!!' 카테고리의 다른 글

Wrapper_Ex2  (0) 2015.04.10
WrapperClass  (0) 2015.04.10
HashCode  (0) 2015.04.10
Equals_Ex2  (0) 2015.04.10
Equals  (0) 2015.04.10

HashCode

Posted 2015. 4. 10. 15:54

package chap9;

// 해쉬코드란 객체를 구별하는 고유의 값( 주소값 )
// 두 객체의 해쉬코드값이 다른 경우는 두 객체는 서로 다른 객체다.
// hashCode() 메서드는 내용이 같으면 같은값이 나오도록
// 오버라이딩이 가능 하다.
// -> Collection에서 다시 설명

// 객체의 내용이 같은지를 판단하는 기준이 되는 메서드는
// equals() 메서드와 hashCode() 메서드를 사용 한다.

public class HashCodeEx1 {
 public static void main(String[] args) {
  String str1 = new String("abc");
  String str2 = new String("abc");
  
  // 스트링은 오버라이딩이 되어있다. 같은 hashCode값이 나온다.
  System.out.println(str1.hashCode());
  System.out.println(str2.hashCode());
  
  if( str1 == str2 ) System.out.println("두 문자열은 같다");
  else System.out.println("두 문자열은 다르다");
  
  // 원래의 해쉬코드값을 구하기 위해서는( 오버라이딩 하지않은 원래의 해쉬값 )
  System.out.println(System.identityHashCode(str1));
  System.out.println(System.identityHashCode(str2));
  System.out.println();
  
  
  Value2 v1 = new Value2(10);
  Value2 v2 = new Value2(10);
  System.out.println(v1.hashCode());
  System.out.println(v2.hashCode());
  System.out.println(System.identityHashCode(v1));
  System.out.println(System.identityHashCode(v2));
 }
}

'Java !!!' 카테고리의 다른 글

WrapperClass  (0) 2015.04.10
String  (0) 2015.04.10
Equals_Ex2  (0) 2015.04.10
Equals  (0) 2015.04.10
StringBuffer_Ex2  (0) 2015.04.10

Equals_Ex2

Posted 2015. 4. 10. 15:54

package chap9;

class Value2{
 int value;
 Value2(int value){
  this.value = value;
 }
 
 // 객체의 내용을 비교해서 같으면 true
 // 다르면 false 리턴하는 메서드로 오버라이딩
 @Override
 public boolean equals( Object obj ){
  if( obj instanceof Value2 ){
   Value2 v = (Value2)obj;
   if( value == v.value ) return true;
   else return false;
  }
  else return false;
 }
}

public class Equalsx2 {
 public static void main(String[] args) {
  Value2 v1 = new Value2(10);
  Value2 v2 = new Value2(10);
  
  if( v1 == v2 ) System.out.println("v1객체와 v2객체는 같습니다.");
  else System.out.println("v1객체와 v2객체는 다릅니다.");

--> 객체를 비교하면 다르다가 출력
  
  if( v1.equals(v2) ) System.out.println("v1.equals(v2) : true");
  else System.out.println("v1.equals(v2) : false");

--> 객체들의 Obj를 비교하면 같다가 출력됨. 둘다 Value2를 사용했기때문
  
  System.out.println(v1.hashCode());
  System.out.println(System.identityHashCode(v1));
 }
}

'Java !!!' 카테고리의 다른 글

String  (0) 2015.04.10
HashCode  (0) 2015.04.10
Equals  (0) 2015.04.10
StringBuffer_Ex2  (0) 2015.04.10
StringBuffer  (0) 2015.04.10

Equals

Posted 2015. 4. 10. 15:54

package chap9;

// Equels 메서드 연습

class Value{
 int value;
 Value(int value){
  this.value = value;
 }
}

// Object 클래스의 equals 메서드는 객체비교방식 구현
// 객체비교는 == 연산자로도 가능
// equals 메서드는 내용비교하는 방식으로 오버라이딩 필요
// 대부분의 클래스는 equals 메서드를 내용비교 방식으로
// 오버라이딩해서 사용하고 있다. ( string )

public class Equalsx1 {
  
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  Value v1 = new Value(10);
  Value v2 = new Value(10);
  
  if( v1 == v2 ) System.out.println("v1객체와 v2객체는 같습니다.");
  else System.out.println("v1객체와 v2객체는 다릅니다.");

--> 객체는 v1, v2를 말함. 다르다가 출력됨.
  
  if( v1.equals(v2) ) System.out.println("v1.equals(v2) : true");
  else System.out.println("v1.equals(v2) : false");

--> equals도 마찬가지로 객체를 비교함. 다르다가 출력됨
  
  
  v2 = v1;
  if( v1 == v2 ) System.out.println("v1객체와 v2객체는 같습니다.");
  else System.out.println("v1객체와 v2객체는 다릅니다.");

--> 참조자가 같아 지면서 같다가 출력됨  


  if( v1.equals(v2) ) System.out.println("v1.equals(v2) : true");
  else System.out.println("v1.equals(v2) : false");
 }
}

--> 마찬가지로 같다가 출력됨.

'Java !!!' 카테고리의 다른 글

HashCode  (0) 2015.04.10
Equals_Ex2  (0) 2015.04.10
StringBuffer_Ex2  (0) 2015.04.10
StringBuffer  (0) 2015.04.10
innerClass_Ex4  (0) 2015.04.10

StringBuffer_Ex2

Posted 2015. 4. 10. 15:53

package chap9;

// StringBuffer 예제
// jdk 5.0 이후에 StringBuilder 클래스를 새로 만듬
// StringBuffer와 StringBuilder는 메서드가 같다.

// StringBuffer : 모든 메서드가 스레드에 동기화 되어 있다.
// StringBuilder : 모든 메서드가 스레드에 동기화 되어 있지 않아.

public class StringBufferEx2 {
 public static void main(String[] args) {
  
  long startTime = 0;
  long endTime = 0;
  double dTime = 0d;
  
  long startTime2 = 0;
  long endTime2 = 0;
  double dTime2 = 0d;
  
  startTime = System.nanoTime();
   
  
  StringBuffer sb = new StringBuffer();
  sb.append("abc").append(123).append(true);
  System.out.println(sb); // abc123true
  sb.delete(1, 3);
  System.out.println(sb); // a123true
  sb.deleteCharAt(4);
  System.out.println(sb); // a123rue
  sb.insert(5, "@@");
  System.out.println(sb); // a123r@@ue
  sb.insert(6, 7.89);
  System.out.println(sb); // a123r@7.89@ue
  sb = new StringBuffer("ABCDEFG");
  sb.replace(0, 3, "abc");
  System.out.println(sb);
  sb.reverse();
  System.out.println(sb);

  endTime = System.nanoTime();
  dTime = (double)(endTime - startTime)/(double)1000000;
  
  System.out.println(dTime);
  
  startTime2 = System.nanoTime();
  String str = "abcdefghijklmn";
  String str2 = "1234567890";
  String str3 = str + str2;
  endTime2 = System.nanoTime();
  dTime2 = (double)endTime2 - startTime2 / 1000000;
  System.out.println(str3);
  System.out.println(dTime2);
 }
}

'Java !!!' 카테고리의 다른 글

Equals_Ex2  (0) 2015.04.10
Equals  (0) 2015.04.10
StringBuffer  (0) 2015.04.10
innerClass_Ex4  (0) 2015.04.10
innerClass_Ex3  (0) 2015.04.10
« PREV : 1 : 2 : 3 : 4 : ··· : 6 : NEXT »