2016-12-26 5 views
2
내가 java.I에서 문자열 배열에 문자열 빌더를 변환하려고

을에서 문자열 배열로 그것은 문자열 배열입니다.문자열 빌더 문자열을 모두 StringBuilder를 변환 한 후 <strong><em>변환</em></strong> 방법을 분할 사용하는 문자열</em>에 <strong><em></strong> 방법을 사용한 자바

배열 크기에 문제가 있습니다. String builder의 출력은 0,,1,,,,,,,,,,2,,,입니다. 사실 15 개의 요소가 들어 있지만 stringbuilder의 크기는 18로 표시됩니다. 문자열 배열로 변환하면 크기가 13으로 표시됩니다.

잘못된 방법을 사용하고 있습니까? String builder를 String Array로 변환하는 다른 방법이 있습니까?

StringBuilder output = new StringBuilder(); 

for (String str : listToSearch) { 
    int index = findIndex(headerArrayList, str); 
    if (index > -1) { 
     output.append(index); 
    } else { 
     output.append(str); 
    } 
    output.append(","); 
} 

String out = output.toString(); 
String[] destIndexArray = out.split(","); 

findIndex 방법 :

private static int findIndex(List<String> headerList, String element) { 
    for (int i = 0; i < headerList.size(); i++) { 
     if (headerList.get(i).equals(element)) { 
      return i; 
     } 
    } 
    return -1; 
} 
+1

stringbuilder 대신 목록을 사용하는 방법에 대해 ?? –

+0

문자열 작성기 대신 목록을 사용해야합니다. 마지막으로 배열 –

+1

으로 변환하십시오. 또한 다음을 확인하십시오. https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object) – Azodious

답변

3

내가 잘못 방법을하고 있습니까?

코드 개선이 필요한 곳이 많이 있습니다. 나는 몇 가지를 제안하고있어 대신 다시 발명 휠의

  1. , 기존 API를 찾습니다 : https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#indexOf(java.lang.Object)

  • 당신은 추가 할 수 있습니다 만 String의 대신
      을 색인.
      for (String str :listToSearch) { 
          int index=headerArrayList.indexOf(str); 
          if (index < 0) { 
           output.append(str); 
           output.append(","); 
          } 
          // if(!headerArrayList.contains(str)) 
          // output.append(str); 
          // output.append(","); 
      } 
      

    1. 사용 List<String> 대신 StringBuilder.

    String builder를 String Array로 변환하는 다른 방법이 있습니까?

    예, 그렇지만 위의 사항을 수행하면 필요하지 않습니다. 하지만 물었습니다. 이것을 참조하십시오 : How can a StringBuilder best be converted to a String[]?

    1

    stringbuilder를 사용하여 다시 조작하고 그것을 배열로 변환하는 것은 좋은 생각이 아닙니다. 대신 문자열 목록에 모든 것을 삽입이 사용하는 문자열이 정수인지 확인 여부를 위해 :

    str.matches("^-?\\d+$"); 
    

    을 그리고 당신은 배열로 변환하려는 경우 당신은

    String[] str = list.toArray(new String[list.size()]) 
    
    0

    단순히을 가지고 할 수있는 한 줄의 코드로 시도했습니다.

    stringBuilder.toString.split("delimiter")?대신 모두 StringBuilder로 변환하는 것을 나던 작품은, 다음, 당신은 내가이 경우에 생각이

    List<String> output = new List<String>(); 
    
    for (String str : listToSearch) { 
    int index = findIndex(headerArrayList, str); 
    if (index > -1) { 
        output.add(index); 
    } else { 
        output.add(str); 
    } 
    } 
    

    을 할 수 있다면

    귀하의 경우에

    ,

    destIndexArray = output.toString.split(",") 
    

    처럼 보일 수 있습니다 당신 목록으로 구분 기호를 사용할 필요가 없습니다. 희망이 도움이됩니다!