HashMap은 HashTable과는 다르게 Thread-safe하지 않다.
그래서 put이나 get을 사용할 때 명시적으로 동기화를 시켜주어야 한다.
하지만 Collections.SynchronizedMap()이라는 메소드로 thread-safe하게 만들 수 있다.

이 경우에,
Simple operation (put, get) 등은 synchronized로 감싸주지 않아도 된다.
하지만 iterator를 사용해서 탐색을 할 경우에는 따로 명시적으로
Synchronized를 써주어야 한단다.

Map m = Collections.synchronizedMap(new HashMap());
      ...
  Set s = m.keySet();  // Needn't be in synchronized block
      ...
  synchronized(m) {  // Synchronizing on m, not s!
      Iterator i = s.iterator(); // Must be in synchronized block
      while (i.hasNext())
          foo(i.next());
  }

http://java.sun.com/javase/6/docs/api/java/util/Collections.html#synchronizedMap(java.util.Map)



string -> int

String s = "0";

int i = Integer.parseInt(s);



Int -> String

int i = 0;

String s = Integer.toString(i);



-----------------------------------------------------------------------------------------------------------

추가 팁 

int - String 하기 전에 아래 함수를 공통 함수에 넣어놓고 미리 체크하면 예외 발생을 막을수 있음 


public boolean isNumber(String number){  

if (number == "") { 

      return false; 

for (int i = 0; i < number.length(); i++) { 

if (!Character.isDigit(number.charAt(i))) { 

return false; 

    } 

return true; 


String - int 가 질 기억 안난다면 추천하고 싶진 않지만.. 


int i = 0; 

String s = i + "";



위의 팁 처럼 

예외를 막기위해 체크 해줘야 합니다+ㅁ+ㅋ 

그렇지 않으면 java.lang.NumberFormatException: For input string: 의 예외가 나지요~~ 

 if(!newTemp.equals(null)){  // 이 부분에서 나는 것이였다. 

              // 널 체크 추가!! 

            newNumTemp = Integer.parseInt(newTemp); 

            System.out.println("#####newNumTemp="+newNumTemp+"#####"); 

            if(newNumTemp > 0){  // 이것도 추가 해주었다 ㅋ 

                newRegi = (newNumTemp)+1; 

                System.out.println("#####newRegi="+newRegi+"#####"); 

              } 

 } 


이런식으로 체크 해주면 됩니당~^^*

'Java' 카테고리의 다른 글

SynchronizedMap을 통한 thread-safe HashMap 구현  (0) 2015.01.23

+ Recent posts