2013-10-04 5 views
0

다시 도움이 필요합니다. 죄송합니다. 배열에서 null 값을 제거하려면 어떻게해야합니까? 여기 내가 지금까지 얻은 것이있다.배열에서 null 값/요소를 삭제하는 방법

int unikCount = 0; 
String c = " "; 
for (int i = 0; i < a.length; i++) { 
    for (int j = 0; j < a.length; j++) { 
     if (tempAry[i].equals(tempAry[j])) { 
      unikCount++; 
     } 
     if (unikCount > 1) { 
      tempAry[j] = c; 
      unikCount = 1; 

     } 

    } 
    unikCount = 0; 
} 
for (i = 0; i < a.length; i++) { 
    if (tempAry[i] != c) { 
     unikCount++; 
    } 

} 
System.out.println(unikCount); 

for (int i = 0; i < a.length; i++) { 
    for (int j = 1; j < a.length; j++) { 
     if (tempAry[i].equals(tempAry[j])) { 
      if (tempAry[i] == c) { 
       count++; 
       if (tempAry[j] != c) { 
        count++; 
        tempAry[j] = tempAry[i]; 

       } 
      } 
     } 
    } 

} 
count = 0; 
for (int i = 0; i < a.length; i++) { 
    System.out.println(tempAry[i]); 
} 

* 제거 부분은 "System.out.println (unikCount)"뒤에 있습니다. 다가올 도움에 감사드립니다. 그런데, 해시와 arraylist를 사용하지 않습니다.

if (null == someObject) 
{ 
    // do things 
} 

가 배열에서 요소를 제거 할 수있는 방법이 없습니다 및 자동 축소 한 :

+0

새 배열을 만들고 null이 아닌 값을 복사 할 수없는 이유가 있습니까? –

+0

배열에 NULL 값이있는 버킷을 제거하여 병합하여 배열을 짧게 만들겠습니까? 배열 대신 목록을 사용하지 않는 이유가 무엇입니까? 목록을 직접 관리하십시오. – Drizzt321

+0

'string'을'=='와 비교하지 말고'String.equals()'를 사용하십시오. See [Java String.equals versus ==] (http://stackoverflow.com/questions/767372/java-string-equals-versus) – Smit

답변

2

이 같은 null를 확인할 수 있습니다. 값을 저장하고 새 크기의 배열을 만들고 모든 항목을 전송하려면 임시 배열을 사용해야합니다.

더 효과적인 방법은 List을 사용하는 것입니다. (적절한 들여 쓰기와 ) 로직에서

0

봐 :

if(tempAry[i].equals(tempAry[j])) {      
    if(tempAry[i] == c) {   
     count++; 
     if(tempAry[j] != c) { 
      count++; 
      tempAry[j] = tempAry[i]; 

     } 
    } 
} 

그것은 이해가되지 않습니다. 왜 tempAry[j] != c을 안에 넣을까요?if(tempAry[i] == c) ???

대신 if...else을 사용하셨습니까?

0
int j = 0; 
Object[] temp = new Object[a.length]; 
for (int i = 0; i < a.length; i++) { 
    if (a[i] != null) { 
     temp[j++] = a[i]; 
    } 
} 
Object[] newA = new Object[j]; 
System.arraycopy(temp, 0, newA, 0, j); 

배열이 예를 들어 String의 배열이면 "Object"를 "String"으로 변경해야합니다. 그리고 "null"이 빈 문자열을 의미하면 if 테스트가 적절히 변경됩니다.

관련 문제