자바에서 클래스를 페어링하는 다섯 가지 대안

쌍은 두 개체의 튜플을 저장하는 컨테이너입니다. 자바는 실제로 쌍 클래스의 구현을 제공하지 않습니다. 이 게시물에서,우리는 자바에서 클래스를 쌍에 대한 다양한 대안에 대해 논의 할 것이다.

쌍은 종종 두 개체를 함께 추적하는 데 유용합니다. 여기에는 일반적으로 첫 번째와 두 번째로 불리는 두 개의 필드가 포함되어 있으며 아무 것도 저장할 수 있습니다. 첫 번째 필드와 두 번째 필드 사이에 의미있는 관계가 없음에도 불구하고 프로그래머는 자바에서 이러한 기능을 놓치는 경우가 많습니다.

이전 게시물에서,우리는 자바에서 우리 자신의 쌍 클래스를 구현하는 방법을 논의했다. 이 게시물에서,우리는 아래에 설명 된 바와 같이,원하는 격차를 채우기 위해 자바에서 사용할 수있는 해결 방법을 논의 할 것이다:

지도.인터페이스

지도를 사용할 수 있습니다.이 예제에서는 자바 인터페이스에 대한 자세한 내용을 설명합니다. 키-값 쌍을 나타내는 의미 있는 이름을 갖는 훌륭한 예입니다.

지정된 키에서 지정된 값으로의 매핑을 나타내는 항목을 생성하기 위해,자바는 맵의 두 가지 구체적인 구현을 제공한다.입력 인터페이스,즉 추상 맵.그리고 이것은 매우 간단합니다.간단한불변의입국.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

import java.util.AbstractMap;
가져 오기 자바.유틸리티해시 세트;
가져 오기 자바.유틸리티지도;
가져 오기 자바.유틸리티설정;
클래스 쌍
{
// 지정된 값
공개 정적<티,유>맵에서 맵 항목(키-값 쌍)을 반환합니다.2018 년 10 월 15 일-2018 년 10 월 15 일)
{
새 추상 맵을 반환합니다.간단한<>(첫 번째,두 번째);
}
}
클래스 튜플
{
// 맵을 사용하여 자바에서 쌍 클래스를 구현하십시오.항목
공용 정적 무효 메인(문자열 인수)
{
설정<지도.항목<문자열,정수>>항목=새 해시 집합<>();
항목.추가(쌍.의(“자바”, 50));
항목.추가(쌍.(“기음++”, 30));
체계.밖으로.인쇄(항목);
// 자바 8 이상에서만
항목을 실행합니다.각 항목-> {
면(항목.키().1494>

시스템.밖으로.인쇄(기입.겟밸류());
});
}
}

실행 코드 다운로드

출력:

50

자바 8-자바 스크립트.유틸리티쌍

마지막으로 긴 대기 후,쌍<케이,브이>클래스는 자바 8 에 추가됩니다.유틸리티 패키지. 이 클래스는 키-값 쌍을 나타내며 키(),값(),해시 코드(),같음(자바)과 같은 매우 기본적인 작업을 지원합니다.랭자바에서 상속 된 몇 가지 방법이 있습니다.랭객체 클래스. 그럼 뭔가 허,아무것도보다 낫다?.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

import javafx.util.Pair;
import java.util.ArrayList;
import java.util.List;
클래스 튜플
{
// 자바 스크립트를 보여줍니다.유틸리티자바 8 이상에서 소개 된 쌍 클래스
공개 정적 무효 메인(문자열 인수)
{
문자열,정수>>항목=새 배열 목록<>();
항목.추가(새 쌍<>)”, 20));
항목.추가(새 쌍<>)++”, 30));
// 첫 번째 쌍을 인쇄하려면 다음 단계를 따르십시오.밖으로.다음 예제는 다음과 같습니다.가져 오기(0).겟키() + “, ” +
항목.가져 오기(0).()+”}”); 두 번째 페어는 두 번째 페어를 사용하여 인쇄 할 수 있으며 두 번째 페어는 두 번째 페어를 사용하여 인쇄 할 수 있습니다.밖으로.다음 예제는 다음과 같습니다.가져 오기(1).겟키() + “, ” +
항목.가져 오기(1).겟밸류() + “}”);
}
}

코드 다운로드

출력:
{씨,20}
{씨++, 30}

아파치 커먼즈 랭 라이브러리

아파치 커먼즈 랭 라이브러리는 또한 한 쌍의<엘,아르 자형>요소가 왼쪽과 오른쪽 인 유틸리티 클래스를 제공합니다. 그것은 추상으로 정의 되 고 맵을 구현 합니다.키가 왼쪽이고 값이 오른쪽 인 입력 인터페이스.

쌍이 있습니다.의()객체의 지정된 쌍에서의 불변 쌍을 얻기 위해 사용될 수있는 방법. 하위 클래스 변경 가능한 쌍은 변경 가능한 반면 변경할 수없는 쌍은 변경할 수 없습니다. 그러나 불변에 저장된 객체의 유형쌍 자체가 변경 될 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

가져 오기 조직.아파치.공유지.랭 3튜플.불변 쌍;
가져 오기 조직.아파치.공유지.랭 3튜플.변경 가능한 쌍;
가져 오기 조직.아파치.공유지.랭 3튜플.쌍;
가져 오기 자바.유틸리티1494>

가져 오기 자바.유틸리티목록;
클래스 튜플
{
// 자바
에서 아파치 커먼즈 라이브러리를 제공 한 쌍 클래스를 시연하십시오.)
{
문자열,정수>>항목=새 배열 목록<>();
항목.이 예제에서는 변경 가능한 쌍이 1494>

항목보다 작다고 가정합니다.이 예제에서는 다음 예제에서도 사용할 수 있습니다.추가(쌍.(“자바”,50));//쌍을 사용하여.의()
체계.밖으로.인쇄(항목);
// 1. first pair is mutable
Pair<String, Integer> pair = entries.get(0);
pair.setValue(100); // works fine
// printing pair using getKey() and getValue() method
System.out.println(pair.getKey() + “, ” + pair.getValue());
// 2. second pair is immutable
pair = entries.get(1);
try {
pair.setValue(100); // runtime error
}
catch (UnsupportedOperationException ex) {
System.out.println(“UnsupportedOperationException thrown”);
}
// 인쇄 쌍()방법
시스템.밖으로.인쇄(쌍.나는 그것을 좋아한다.지트라이트());
// 3. 세 번째 쌍은 또한 불변
쌍=항목입니다.얻을(2);
{
쌍을 시도하십시오.런타임 오류가 발생했습니다.
}
이 문제를 해결하려면 다음 단계를 수행하십시오.밖으로.이 문제를 해결하려면 다음을 수행하십시오.”);
}
체계.밖으로.인쇄(쌍.나는 그것을 좋아한다.());
}
}

예를 들어,실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인 실행 중인, 50

자바 튜플 라이브러리

자바 튜플은 튜플을 다루는 또 다른 유명하고 간단한 자바 라이브러리입니다. 그것은 1~10 요소에 이르기까지 튜플 자바 클래스의 집합을 제공합니다. 우리의 목적을 위해,우리는 쌍을 사용할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

가져 오기 조직.자바투플쌍;
가져 오기 자바.유틸리티1494>

가져 오기 자바.유틸리티목록;
클래스 튜플
{
// 자바
공용 정적 무효 메인(문자열 인수)에서 쌍 클래스 제공 자바 라이브러리 시연)
{
문자열,정수>>쌍=새 배열 목록<>();
쌍.추가(쌍.(“자바”,50));//쌍을 사용하여.()
쌍으로.첫 번째 쌍을 생성자(1494>

)로 인쇄하고 첫 번째 쌍을 생성자(1494>

)로 인쇄합니다.밖으로.다음 예제에서 사용할 수 있습니다.가져 오기(0).겟발루 0() + “, ” +
쌍.가져 오기(0).겟밸류 1() + “}”);
// 두 번째 쌍을 사용하여 두 번째 쌍을 인쇄 할 수 있습니다()및 겟값 1()방법
시스템.밖으로.다음 예제에서 사용할 수 있습니다.가져 오기(1).겟발루 0() + “, ” +
쌍.가져 오기(1).겟밸류 1() + “}”);
}
}

코드 다운로드

출력:
{자바,50}
{기음++, 30}

컬렉션.다른 방법은 컬렉션을 사용하는 것입니다.자바의 싱글톤맵()은 맵과 비슷합니다.2015 년 10 월 15 일에 확인함. 지정된 키-값 쌍 매핑 만 포함하는 불변 싱글 톤 맵을 반환하며 쌍으로 처리 할 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
가져 오기 자바.유틸리티설정;
클래스 쌍
{
// 지정된
만 포함하는 불변의 단일 맵을 반환//키-값 쌍 매핑
공개 정적<티,유>지도<티,유>(티 첫 번째,유 두 번째)
{
컬렉션을 반환합니다.싱글 톤 맵(첫 번째,두 번째);
}
}
클래스 튜플
{
// 컬렉션을 사용하여 자바에서 쌍 클래스를 구현합니다.단일 맵()
공용 정적 무효 메인(문자열 인수)
{
설정<맵<문자열,정수>>항목=새 해시 집합<>();
항목.추가(쌍.의(“자바”, 50));
항목.추가(쌍.(“기음++”, 30));
체계.밖으로.인쇄(항목);
}
}

실행 코드 다운로드

출력:

마지막으로 안드로이드 프로젝트에서 우리는 안드로이드를 사용할 수 있습니다.유틸리티쌍 클래스.