[위 에] Guava 배 움 의 RangeSet
3524 단어 guava
import com.google.common.collect.*;
/**
* User:
* Email:[email protected]
* Blog: http://www.iteblog.com
* Date: 13-7-17
* Time: 4:10
*/
public void testRangeSet(){
RangeSet rangeSet = TreeRangeSet.create();
rangeSet.add(Range.closed(1, 10));
System.out.println(rangeSet);
rangeSet.add(Range.closedOpen(11, 15));
System.out.println(rangeSet);
rangeSet.add(Range.open(15, 20));
System.out.println(rangeSet);
rangeSet.add(Range.openClosed(0, 0));
System.out.println(rangeSet);
rangeSet.remove(Range.open(5, 10));
System.out.println(rangeSet);
}
위의 함수 의 운행 결 과 는 다음 과 같다.
{[1‥10]}
{[1‥10][11‥15)}
{[1‥10][11‥15)(15‥20)}
{[1‥10][11‥15)(15‥20)}
{[1‥5][10‥10][11‥15)(15‥20)}
Range 류 의 방법 에 익숙 하지 않 으 니 을 읽 으 세 요.
주의: RangeSet 은 JDK 1.6 의 NavigableMap 특성 을 충분히 활용 해 야 하기 때문에 JDK 1.6 이하 버 전 은 사용 할 수 없습니다.
그러면 우리 가 range set 의 모든 요 소 를 옮 겨 다 닐 필요 가 있다 면 다음 방법 으로 이 루어 질 수 있 습 니 다.
public void iteratorRangeSet(RangeSet integerRangeSet) {
if(integerRangeSet == null){
return;
}
Set<Range> ranges = integerRangeSet.asRanges();
Iterator<Range> iterator = ranges.iterator();
while(iterator.hasNext()){
Range next = iterator.next();
System.out.println(next);
}
}
실행 결과:
[1‥5]
[10‥10]
[11‥15)
(15‥20)
만약 에 우리 가 rangeSet 의 상호 보완 범 위 를 얻 으 려 면 RangeSet 이 제공 하 는 complement () 방법 을 사용 할 수 있 습 니 다. rangeSet. complement () 역시 RangeSet 입 니 다. 그 중의 요소 도 서로 교차 하지 않 고 비어 있 지 않 은 RangeSet 입 니 다. 그러면 rangeSet 의 상호 보완 집합 은 아래 와 같이 쓸 수 있 습 니 다.
RangeSet complement = rangeSet.complement();
System.out.println(complement);
얻 은 결 과 는:
{(-∞‥1)(5‥10)(10‥11)[15‥15][20‥+∞)}
마침 range Set 의 상호 보완 이다.rangeSet 에서 어떤 요소 가 rangeSet 에 있 는 지 확인 하려 면 contains (C) 로 이 루어 질 수 있 습 니 다. 그 중에서 C extends java. lang. Comparable.예 를 들 어 저 는 상기 range Set 에 15 가 포함 되 어 있 는 지 알 고 싶 습 니 다. 이렇게 쓸 수 있 습 니 다.
boolean isIn = rangeSet.contains(15);
System.out.println(isIn);//false, 15.
어떤 요소 가 rangeSet 의 어느 범위 안에 있 는 지 알 고 싶다 면 이렇게 쓸 수 있 습 니 다.
Range integerRange = rangeSet.rangeContaining(17);
System.out.println(integerRange);
// (15‥20), 17 (15‥20) , 。
어떤 범위 가 rangeSet 범위 에 포함 되 어 있 는 지 알 고 싶다 면 이렇게 쓸 수 있 습 니 다.
boolean encloses = rangeSet.encloses(Range.closedOpen(18, 20));
System.out.println(encloses);//true. (18,20) (15,20)
encloses = rangeSet.encloses(Range.closedOpen(5, 20));
System.out.println(encloses);//false. (5,20) rangeSet .
(끝)
옮 겨 싣 기 설명: 과거 기억 옮 기기 (http://www.iteblog.com/) 본문 링크 주소: Guava 학습 의 RangeSet (http://www.iteblog.com/archives/538)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Guava 학습노트-Function, Predicate먼저 실례에 필요한 실체 클래스를 도입하고 실체 클래스의 get/set 방법은 생략합니다 하나의 Function 인터페이스 구현: Function TestCase: Predicate Predicate 인터페이스 구현...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.