2017-01-29 5 views
4

이 관용구는 무엇을 의미합니까? "\ 0"과 연결된 자바 문자열 (예 : "Japan \ 0")? 예 :SortedSet에서 headSet을 찾을 때 null 문자 " 0"을 추가해야하는 이유는 무엇입니까?

SortedSet<String> countryHeadSet 
    = countrySet.headSet("Japan\0"); 

전화에서 "Japan\0" 문자열의 의미는 무엇입니까? 프로그래머가 글을 쓸 때 어떤 차이가 있습니까?

countryHeadSet 
    = countrySet.headSet("Japan"); 
+0

당신이이 질문 봤어 내가 관용구의 사용을 설명하기 위해 내 자신의 테스트 프로그램을 포함하고

? http://stackoverflow.com/questions/9753576/whats-the-meaning-of-char-zero-0-in-java –

+0

' '\ 0'' char가'null' char –

+0

사실 그것은' NUL'을'null 문자 '로 알려진'char'로 선언하지만'null'은 Java 키워드이며 원시 타입에는 적용되지 않습니다. 나는 그 단어가 너무 비슷하지만 의미가 너무 다르기 때문에 그것을 가져온다. https :////// # jls-EscapeSequence –

답변

3

답변을 찾았습니다. 모든 아이디어를 가져 주셔서 감사합니다. 당신이 SortedSet의 범위 뷰 작업으로 을 볼 때 문자열 + "\0"의 관용구의 사용

, 특히, 문자열의 후계자을 찾기 위해 그것을 사용하는 것입니다. 그 범위의 뷰 작업 ( subSet() , headSet()tailSet())는 반개 간격을 제공하고 간격을 폐쇄 구성하는 문자열의 후임이 필요할 수 있기 때문에

이러한 후속 필요하다. 이것은 Java Doc of Sorted Set

으로 설명됩니다. 일부 메소드는 제한된 범위의 서브 세트를 반환합니다. 이러한 범위는 반 개방입니다. 즉, 낮은 끝 점은 포함하지만 높은 끝 점은 포함하지 않습니다 (해당되는 경우). 끝 점이 포함됩니다. 닫힌 범위 (양쪽 모두 끝점을 포함하는 )가 필요하며 요소 유형이 지정된 값의 후속 계산 인 을 허용하는 경우 하위 항목에 하위 항목 (후속 항목 (highEndpoint))을 요청하기 만하면됩니다. 예를 들어 s가 정렬 된 문자열 집합 이라고 가정합니다. 다음 관용법은 s에서 0에서 255까지의 모든 문자열을 포함하는 뷰를 얻습니다.

SortedSet sub = s.subSet (low, high + "\ 0"); 즉

, 아래 두 통화 사이의 차이 :

countrySet.headSet("Japan\0"); 
countrySet.headSet("Japan") 

은 첫 번째 최대, 세트의 처음부터 범위 countrySet 에있는 모든 문자열을 얻을 것입니다 문자열을 포함합니다. "Japan" (즉, 범위는 닫음 간격입니다.); 하면서 두 번째 세트의 초기 의 범위의 모든 문자열 까지 있지만 문자열 "Japan" (즉, 범위가 반개 간격) 제외를 얻을 것이다.출력이 될 것

import java.util.Arrays; 
import java.util.List; 
import java.util.SortedSet; 
import java.util.TreeSet; 

public class StringPlusNull { 

    public static void main(String[] args) { 
     List<String> countryList 
      = Arrays.asList("U.S.", "U.K.", "China", "Japan", "Korea"); 
     SortedSet<String> countrySet 
      = new TreeSet<>(countryList); 

     String toElement = "Japan"; 
     SortedSet<String> countryHeadSet 
      = countrySet.headSet(toElement); 
     System.out.format("There are %d countries in the " 
       + "(half-open) headset [, %s): %s%n" 
       , countryHeadSet.size(), toElement, countryHeadSet); 

     toElement = "Japan\0"; 
     countryHeadSet 
      = countrySet.headSet(toElement); 
     System.out.format("There are %d countries in the " 
       + "(half-open) headset [, %s): %s%n" 
       , countryHeadSet.size(), toElement, countryHeadSet); 
    } 

} 

:

There are 1 countries in the (half-open) headset [, Japan): [China] 
There are 2 countries in the (half-open) headset [, Japan): [China, Japan] 
관련 문제