Guava 소감: Range
수학 에서 의 범 위 는 경계 와 무 경계 의 구분 이 있다.과 바 에서 도 마찬가지다.만약 이 범위 가 경계 가 있다 면 이 범 위 는 개집 (단점 포함 하지 않 음) 과 폐 집 (단점 포함) 으로 나 눌 수 있다.풀 리 지 않 는 것 이 라면 + 표시 할 수 있다.매 거 하면 모두 9 가지 범위 로 표시 된다.
콘 셉 트
표시 범위
guava 대응 기능 방법
(a..b)
{x | a < x < b}
open(C, C)
[a..b]
{x | a <= x <= b}
closed(C, C)
[a..b)
{x | a <= x < b}
closedOpen(C, C)
(a..b]
{x | a < x <= b}
openClosed(C, C)
(a..+∞)
{x | x > a}
greaterThan(C)
[a..+∞)
{x | x >= a}
atLeast(C)
(-∞..b)
{x | x < b}
lessThan(C)
(-∞..b]
{x | x <= b}
atMost(C)
(-∞..+∞)
all values
all()
위 표 의 guava 대응 기능 방법 란 은 Range 류 가 제공 하 는 방법 을 나타 내 며, 각각 9 가지 발생 가능 한 범위 구간 을 나타 낸다. 구간 양쪽 에 범위 가 존재 한다 면 구간 오른쪽 수 는 구간 왼쪽 수 보다 작 을 수 없다. 극단 적 인 상황 에서 구간 양쪽 의 수 는 같 지만, 전제 조건 은 최소 한 개의 경계 가 닫 혀 있 는 지 여부 이다.성립 되 지 않 는 다.
실례:
public class TestBaseRange {
@Test
public void testRange(){
System.out.println("open:"+Range.open(1, 10));
System.out.println("closed:"+ Range.closed(1, 10));
System.out.println("closedOpen:"+ Range.closedOpen(1, 10));
System.out.println("openClosed:"+ Range.openClosed(1, 10));
System.out.println("greaterThan:"+ Range.greaterThan(10));
System.out.println("atLeast:"+ Range.atLeast(10));
System.out.println("lessThan:"+ Range.lessThan(10));
System.out.println("atMost:"+ Range.atMost(10));
System.out.println("all:"+ Range.all());
System.out.println("closed:"+Range.closed(10, 10));
System.out.println("closedOpen:"+Range.closedOpen(10, 10));
//
System.out.println("open:"+Range.open(10, 10));
}
}
그 밖 에 범 위 는 바 인 딩 형식 을 통 해 인 스 턴 스 를 구성 할 수 있 습 니 다. 예 를 들 어:
public class TestBaseRange {
@Test
public void testRange(){
System.out.println("downTo:"+Range.downTo(4, BoundType.OPEN));
System.out.println("upTo:"+Range.upTo(4, BoundType.CLOSED));
System.out.println("range:"+Range.range(1, BoundType.CLOSED, 4, BoundType.OPEN));
}
}
출력:
downTo:(4‥+∞)
upTo:(-∞‥4]
range:[1‥4)
조작 방법
1. contains: 현재 Range 에 있 는 지 여 부 를 판단 합 니 다.
@Test
public void testContains(){
System.out.println(Range.closed(1, 3).contains(2));
System.out.println(Range.closed(1, 3).contains(4));
System.out.println(Range.lessThan(5).contains(5));
System.out.println(Range.closed(1, 4).containsAll(Ints.asList(1, 2, 3)));
}
//===== =====
true
false
false
true
2. Endpoint 관련 조회 방법:
@Test
public void testQuery(){
System.out.println("hasLowerBound:"+Range.closedOpen(4, 4).hasLowerBound());
System.out.println("hasUpperBound:"+Range.closedOpen(4, 4).hasUpperBound());
System.out.println(Range.closedOpen(4, 4).isEmpty());
System.out.println(Range.openClosed(4, 4).isEmpty());
System.out.println(Range.closed(4, 4).isEmpty());
// Range.open throws IllegalArgumentException
//System.out.println(Range.open(4, 4).isEmpty());
System.out.println(Range.closed(3, 10).lowerEndpoint());
System.out.println(Range.open(3, 10).lowerEndpoint());
System.out.println(Range.closed(3, 10).upperEndpoint());
System.out.println(Range.open(3, 10).upperEndpoint());
System.out.println(Range.closed(3, 10).lowerBoundType());
System.out.println(Range.open(3, 10).upperBoundType());
}
//====== =======
hasLowerBound:true
hasUpperBound:true
true
true
false
3
3
10
10
CLOSED
OPEN
3. encloses 방법: encloses (Range range) 의 range 가 비교 해 야 할 range 에 포함 되 어 있 는 지 여부
@Test
public void testEncloses(){
Range rangeBase=Range.open(1, 4);
Range rangeClose=Range.closed(2, 3);
Range rangeCloseOpen=Range.closedOpen(2, 4);
Range rangeCloseOther=Range.closedOpen(2, 5);
System.out.println("rangeBase: "+rangeBase+" Enclose:"+rangeBase.encloses(rangeClose)+" rangeClose:"+rangeClose);
System.out.println("rangeBase: "+rangeBase+" Enclose:"+rangeBase.encloses(rangeCloseOpen)+" rangeClose:"+rangeCloseOpen);
System.out.println("rangeBase: "+rangeBase+" Enclose:"+rangeBase.encloses(rangeCloseOther)+" rangeClose:"+rangeCloseOther);
}
//======= ========
rangeBase: (1‥4) Enclose:true rangeClose:[2‥3]
rangeBase: (1‥4) Enclose:true rangeClose:[2‥4)
rangeBase: (1‥4) Enclose:false rangeClose:[2‥5)
4. isConnected: range 연결 가능 여부
@Test
public void testConnected(){
System.out.println(Range.closed(3, 5).isConnected(Range.open(5, 10)));
System.out.println(Range.closed(0, 9).isConnected(Range.closed(3, 4)));
System.out.println(Range.closed(0, 5).isConnected(Range.closed(3, 9)));
System.out.println(Range.open(3, 5).isConnected(Range.open(5, 10)));
System.out.println(Range.closed(1, 5).isConnected(Range.closed(6, 10)));
}
//====== =========
true
true
true
false
false
5. intersection: 두 range 가 연결 되 어 있 을 때 최대 교 집합 으로 돌아 가 연결 되 지 않 으 면 이상 을 던 집 니 다.
@Test
public void testIntersection(){
System.out.println(Range.closed(3, 5).intersection(Range.open(5, 10)));
System.out.println(Range.closed(0, 9).intersection(Range.closed(3, 4)));
System.out.println(Range.closed(0, 5).intersection(Range.closed(3, 9)));
System.out.println(Range.open(3, 5).intersection(Range.open(5, 10)));
System.out.println(Range.closed(1, 5).intersection(Range.closed(6, 10)));
}
//======= =========
(5‥5]
[3‥4]
[3‥5]
: , ,
6. span: 두 range 의 집합 을 가 져 옵 니 다. 두 range 가 두 연 결 된 경우 최소 range 입 니 다.
@Test
public void testSpan(){
System.out.println(Range.closed(3, 5).span(Range.open(5, 10)));
System.out.println(Range.closed(0, 9).span(Range.closed(3, 4)));
System.out.println(Range.closed(0, 5).span(Range.closed(3, 9)));
System.out.println(Range.open(3, 5).span(Range.open(5, 10)));
System.out.println(Range.closed(1, 5).span(Range.closed(6, 10)));
System.out.println(Range.closed(1, 5).span(Range.closed(7, 10)));
}
//===== =======
true
true
true
false
false
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
how to realize GMap텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.