logo

자바 튜플

튜플 다양한 유형의 객체를 보유할 수 있는 데이터 구조입니다. 이 사물들은 서로 연결되어 있지 않지만, 종합적으로 생각할 때 의미가 있습니다. 이 섹션에서는 다음 내용을 논의합니다. 튜플이 뭐야? , 기능, 크기, 그리고 운영 튜플의. 또한, 우리는 다음 사항에 대해 논의할 것입니다. Java의 튜플 구현 .

튜플이란 무엇입니까?

일반적으로 튜플 순서가 지정된 개체 모음입니다. 튜플 데이터는 별도의 바이트 배열에 객체로 저장됩니다. 한 쌍의 대괄호 [] 안에 쉼표로 구분된 값이 있습니다. 튜플은 불변, 목록 데이터 구조와 다릅니다. 튜플은 여러 튜플을 보유할 수 있습니다. 익명 개체로 간주될 수도 있습니다.

튜플의 특징

튜플에는 다음과 같은 기능이 있습니다.

  • 그것은 유형이 안전하고, 반복 가능하고, 불변이며, 그리고 직렬화 가능 .
  • 이는 다음을 구현합니다. toString(), 같음(), 그리고 해시코드()
  • 또한 유사한 (튜플은 Comparable을 구현합니다)

튜플 예

다음 예를 고려해 보겠습니다.

 ['Sophia', 'Female', 22, 'Marketing Manager'] 

위의 튜플은 사중주 튜플이 있기 때문에 요소(객체). 우리는 각 객체가 서로 다른 유형임을 관찰합니다. 하지만 종합적으로 생각해 보면 특별한 의미가 있습니다. 위 튜플은 이름, 성별, 나이, 직위 등 직원의 데이터를 나타냅니다.

튜플의 다른 예를 살펴보겠습니다.

 ['Java', 'Object-oriented', 14] ['John', 'Wick' 21, 'USA', false, '[email protected]'] [3, 'Samsung', 'Galaxy S2', 37000.00] 

자바의 튜플

Java에서 튜플은 각 요소를 객체로 처리하는 일반 데이터 구조이며 이러한 객체는 별도의 바이트 배열에 저장됩니다. 즉, 튜플은 다음과 같다고 말할 수도 있습니다. 주문하다 다양한 유형의 개체 모음.

튜플의 기능은 목록 및 배열 데이터 구조를 사용하여 구현할 수 있지만 이러한 데이터 구조는 설계상 다양한 유형의 데이터 유형을 보유하지 않습니다. 따라서 다음은 분명하다. 이질적인 표준 데이터 구조(목록/배열)를 사용하는 튜플은 Java에서 불가능합니다. 우리가 요구했기 때문에 튜플 보유 요구 사항을 충족하는 데이터 구조 동종의 데이터 구조.

C++에서 모듈로란 무엇입니까?

참고하세요 Java 프로그래밍에는 튜플 데이터 구조가 없습니다. , 기본적으로. 하지만 튜플 데이터 구조는 다음과 같은 타사 라이브러리를 사용하여 구현할 수 있습니다. 자바튜플 .

구현으로 이동하기 전에 먼저 javatuples.jar 파일. 그리고 이 파일을 프로젝트 경로에 추가합니다.

다음 종속성을 사용할 수도 있습니다. pom.xml Java에서 튜플 데이터 구조를 구현하는 파일입니다.

 org.javatuples javatuples 1.2 

튜플을 구현하고 간단한 Java 튜플 프로그램을 만들어 보겠습니다.

Javatuples 라이브러리

그만큼 자바튜플 라이브러리에는 튜플 크기에 해당하는 튜플 클래스가 있습니다. 튜플의 크기는 다를 수 있습니다. 튜플은 최대 10 강요. 각 튜플의 구현은 다릅니다. 클래스 계층 구조는 다음과 같습니다.

 Java.lang.Object ↳ org.javatuples.Tuple ↳ org.javatuples.ClassName 

자바 튜플 클래스

그만큼 튜플 에 속하는 모든 튜플 클래스에 대한 추상 기본 클래스입니다. org.javatuples 패키지. 튜플 클래스의 모든 메소드는 공개적이고 최종적입니다. 다음 표에는 튜플 클래스의 메서드가 요약되어 있습니다. Iterable 및 Serialized 인터페이스를 구현합니다.

방법 통사론 설명
포함() 공개 최종 부울 포함(java.lang.Object 값) 튜플에 특정 요소가 있는지 확인합니다.
모두 포함() 공개 최종 부울 containAll(java.util.Collection 컬렉션) 이 튜플에 지정된 컬렉션(목록/배열)의 모든 요소가 포함되어 있으면 true를 반환합니다.
같음() 공개 최종 부울 같음(java.lang.Object obj) 재정의 같음() Object 클래스의 메소드
getSize() 공개 추상 int getSize() 튜플의 크기를 반환합니다.
getValue() 공개 최종 java.lang.Object getValue(int pos) 튜플의 특정 위치에서 값을 가져옵니다. 이 메소드는 객체를 반환해야 하므로 이를 사용하면 getValueX() 행동 양식.
해시 코드() 공개 최종 int hashCode() 문자열에 대한 해시 코드를 반환합니다. 이는 해시 코드() Object 클래스의 메소드
인덱스() 공개 최종 int indexOf(java.lang.Object 값) 이 문자열 내에서 지정된 하위 문자열이 처음 나타나는 인덱스를 반환합니다.
반복자() 공개 최종 java.util.Iterator iterator() 이 튜플의 요소에 대한 반복자를 적절한 순서로 반환합니다.
마지막 인덱스Of() 공개 최종 int lastIndexOf(java.lang.Object 값) 이 문자열 내에서 지정된 하위 문자열이 마지막으로 나타나는 인덱스를 반환합니다.
toArray() 공개 최종 java.lang.Object[] toArray() 튜플을 배열로 변환합니다.
toString() 공개 최종 java.lang.String toString() 객체의 문자열 표현을 반환합니다. Object 클래스의 toString() 메서드를 재정의합니다.
toList() 공개 최종 java.util.List toList() 튜플을 목록으로 변환합니다.

직접적으로 알려진 서브클래스

튜플의 크기 튜플 클래스 이름
하나의 요소 단위 단위
두 가지 요소
세 가지 요소 세 쌍둥이 세 쌍둥이
4원소 사중주 사중주
5대 요소 오중주 오중주
여섯 가지 요소 육중주 육중주
일곱 가지 요소 일곱 일곱
여덟 가지 요소 팔중주 팔중주
9가지 요소 엔네아드 엔네아드
10대 요소 10년 10년

위의 클래스 외에도 javatuples 라이브러리에서 제공하는 두 개의 추가 클래스가 있습니다. 핵심 가치 그리고 라벨값 . 이 두 클래스는 다음과 유사합니다. 클래스와 동일한 기능을 제공하지만 의미가 다릅니다.

각 튜플 클래스는 다음 세 가지 인터페이스를 구현합니다.

  • 반복 가능
  • 유사한
  • 직렬화 가능

튜플 구현

Java에서 튜플을 구현하는 것은 매우 쉽습니다. 크기에 해당하는 튜플 클래스의 인스턴스를 만들어야 합니다.

TupleExample.java

 import org.javatuples.Quartet; public class TupleExample { public static void main(String args[]) { //create a pair tuple from the constructor Quartet quartet = new Quartet('Sophia', 'Female', 22, 'Marketing Manager'); //print the tuples objects System.out.println('The details of the employee are: ' + quartet); } } 

산출:

 The details of the employee are: [Sophia, Female, 22, Marketing Manager] 

튜플 연산

튜플에 대해 다음 작업을 수행할 수 있습니다.

  • 튜플 만들기
  • 가치 얻기
  • 값 설정
  • 요소 추가
  • 튜플에 대한 반복
  • 튜플을 리스트로 변환
  • 튜플에서 검색하기

튜플 생성

튜플을 만드는 방법에는 세 가지가 있습니다.

  • with() 메소드를 사용하여
  • 생성자를 사용하여
  • 컬렉션을 사용하여

튜플을 생성하는 위의 세 가지 방법을 살펴보겠습니다.

with() 메소드를 사용하여

javatuples 라이브러리는 다음을 제공합니다. 와 함께() 지정된 값을 사용하여 튜플을 생성하는 메서드입니다. 방법은 다음에 속합니다. org.javatuples.Pair 패키지. 값을 사용하여 개체를 인스턴스화하는 데 사용됩니다.

통사론:

 ClassName object = ClassName.with(value-1, value-2, ......, value-n); 

예:

 Pair pair = Pair.with('iPhone 12', 112000.00); 

위의 pair 클래스 객체는 두 개의 값을 가진 튜플을 생성합니다. 이를 위한 Java 프로그램을 만들어 보겠습니다.

CreateTupleExample1.java

 import org.javatuples.Pair; class CreateTupleExample1 { public static void main(String args[]) { Pair pair = Pair.with(9086651, 'Dell Laptop'); System.out.println(pair); } } 

산출:

 [9086651, Dell Laptop] 

생성자를 사용하여

이 경우 요구 사항에 따라 클래스의 생성자를 만듭니다.

통사론:

 ClassName object = new ClassName (value-1, value-2, ……., value-n); 

예:

 Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4); 

생성자를 사용하여 튜플을 생성하는 Java 프로그램을 만들어 보겠습니다.

CreateTupleExample2.java

 import org.javatuples.Quintet; class CreateTupleExample1 { public static void main(String args[]) { Quintet quintet = new Quintet (91237, 'Mac Book Air', 88490.00, '8-Core CPU', 4); System.out.println(quintet); } } 

산출:

 [91237, Mac Book Air, 88490.0, 8-Core CPU, 4] 

컬렉션을 사용하여

javatuples 라이브러리를 사용하면 다음을 사용하여 컬렉션에서 튜플을 생성할 수 있습니다. from컬렉션() 방법. 또한 다음을 사용하여 배열에서 튜플을 생성할 수도 있습니다. 배열()에서 방법. 컬렉션/배열은 튜플과 동일한 유형 및 값을 가져야 합니다.

컬렉션/배열은 Tuple과 동일한 유형을 가져야 하며 컬렉션/배열의 값 개수는 Tuple 클래스와 일치해야 합니다.

통사론:

 ClassName object = ClassName.fromCollection(list); ClassName object = ClassName.fromArray(array); 

예:

 Octet p1 = Octet.fromCollection(list); Sextet p2 = Sextet.fromArray(arr); 

CreateTupleExample3.java

 import java.util.ArrayList; import java.util.List; import org.javatuples.Sextet; import org.javatuples.Octet; class CreateTupleExample3 { public static void main(String args[]) { //creating a list List list = new ArrayList(); //adding elements to the list list.add('C'); list.add('C++'); list.add('Java'); list.add('Python'); list.add('Scala'); list.add('Ruby'); list.add('PHP'); list.add('COBOL'); //creating an object of Pair class and passing the list Octet p1 = Octet.fromCollection(list); //creating an Array String[] arr = {'One', 'Two', 'Three', 'Four', 'Five', 'Six'}; //creating an object of the Pair class and invoking the fromArray() method Sextet p2 = Sextet.fromArray(arr); //prints the tuple created using list System.out.println(p1); //prints the tuple using Array System.out.println(p2); } } 

산출:

CSS에서 이미지 중앙 정렬
 [C, C++, Java, Python, Scala, Ruby, PHP, COBOL] [One, Two, Three, Four, Five, Six] 

값 가져오기

javatuples 라이브러리를 사용하면 다음을 사용하여 지정된 인덱스의 튜플에서 값을 가져올 수도 있습니다. getValueX() 방법. 여기서 X는 객체의 인덱스 값을 나타냅니다. 인덱싱은 0부터 시작됩니다.

예:

 Pair pair = new Pair(value-1, value-2); type1 val1 = pair.getValue0(); 

GetValueExample.java

 import org.javatuples.Pair; class GetTupleValue { public static void main(String args[]) { //creating a tuple Pair pair = Pair.with(12, 'Andrew'); //getting values at index 1 System.out.println(pair.getValue1()); } } 

산출:

 [Andrew] 

값 설정

위에서 논의한 것처럼 튜플은 불변입니다. 따라서 일단 생성되면 수정할 수 없습니다. 이 문제를 극복하기 위해 javatuples 라이브러리는 다음을 제공합니다. setValueX() 방법. 여기서 X는 특정 값을 설정하려는 인덱스 값입니다. 이 메서드는 지정된 인덱스에 새로 추가된 값으로 튜플의 복사본을 만들고 동일한 튜플을 반환합니다.

예:

 Pair pair = new Pair(value-1, value-2); type1 val1 = pair.getValue0(); 

SetValueExample.java

 import org.javatuples.Pair; class SetTupleValue { public static void main(String args[]) { //creating a tuple Pair p1 = Pair.with(67, 69); //setting tuple value at index 1 Pair p2 = p1.setAt1(68); System.out.println(p2); } } 

산출:

 [67, 68] 

값 추가

튜플에 값을 추가하는 방법에는 두 가지가 있습니다.

  • 튜플의 끝에서
  • 특정 인덱스에서

튜플의 끝에서

javatuples 라이브러리는 다음을 제공합니다. 추가하다() 튜플에 객체를 추가하는 방법입니다. 튜플의 끝에 객체를 추가하고 요소 수를 일치시켜 새 튜플을 반환합니다.

두 개의 요소를 가진 튜플이 있고 이 튜플에 다른 요소를 추가하고 싶다고 가정해 보겠습니다. 이러한 경우 쌍 튜플은 세 번째 요소를 지원하지 않습니다. 따라서 페어 튜플에 요소를 추가하면 트리플렛 튜플로 변환됩니다. 예를 살펴보겠습니다.

AddElementInTuple.java

 import org.javatuples.Pair; import org.javatuples.Triplet; public class AddElementInTuple { public static void main(String args[]) { Pair pair = Pair.with('Jack', 46); Triplet triplet = pair.add('Finance Professional'); System.out.println(pair); System.out.println(triplet); } } 

산출:

 [Jack, 46] [Jack, 46, Finance Professional] 

하나의 튜플을 다른 튜플에 추가할 수도 있습니다. 새로 생성된 튜플의 요소 수를 늘립니다. 따라서 추가 후 존재하는 요소 수에 따라 튜플 유형을 반환합니다.

AddTuplesExample.java

 import org.javatuples.Quartet; import org.javatuples.Septet; import org.javatuples.Triplet; public class AddTuplesExample { public static void main(String args[]) { //creating a tuple with three elements Triplet triplet = Triplet.with('Mango', 'Grapes', 'Papaya'); //creating an object of quartet tuple and adding an elements at index-1 in triplet tuple Quartet quartet = triplet.addAt1('Banana'); //adding quartet and triplet tuple we get a septet tuple i.e. 3+4=7 //the following statement can be written as Septet septet = quartet.add(triplet); Septet septet = quartet.add(triplet); System.out.println(triplet); System.out.println(quartet); System.out.println(septet); } } 

산출:

 [Mango, Grapes, Papaya] [Mango, Banana, Grapes, Papaya] [Mango, Banana, Grapes, Papaya, Mango, Grapes, Papaya] 

지정된 인덱스에서

기본적으로 새 요소는 튜플 끝에 추가됩니다. 하지만 다음을 사용하여 지정된 인덱스에 요소를 추가할 수 있습니다. addX() 방법.

AddAtIndexExample.java

 import org.javatuples.Quartet; import org.javatuples.Triplet; public class AddAtIndexExample { public static void main(String args[]) { //creating a tuple with three elements Triplet triplet = Triplet.with('MCA', 'M.Sc.', 'MBBS'); //creating an object of quartet tuple and adding an element at index-2 in triplet tuple Quartet quartet = triplet.addAt2('M.Tech'); System.out.println(triplet); System.out.println(quartet); } } 

산출:

 [MCA, M.Sc., MBBS] [MCA, M.Sc., M.Tech, MBBS] 

요소 검색

튜플에 있는 요소를 검색할 수도 있습니다. javatuples 라이브러리 검색을 위해 다음을 제공합니다. 포함() Tuple 클래스의 메소드 부울 값을 반환합니다. 진실 요소가 있으면 else를 반환합니다. 거짓 . 예를 살펴보겠습니다.

검색요소Example.java

 import org.javatuples.Pair; class SearchingElementExample { public static void main(String args[]) { Pair pair = Pair.with(34, 'Jack'); //returns true because Jack is present in tuple boolean res1 = pair.contains('Jack'); //returns false because Andrew is not present in tuple boolean res2 = pair.contains('Andrew'); System.out.println(res1); System.out.println(res2); } } 

산출:

 true false 

튜플을 컬렉션이나 배열로 변환

각 튜플 클래스에는 각각 List와 Array를 반환하는 asList() 및 toArray() 메서드가 있습니다. 예를 살펴보겠습니다.

TupleToCollection.java

 import java.util.Arrays; import java.util.List; import org.javatuples.Quartet; public class TupleToCollection { public static void main(String args[]) { //Convert to list Quartet quartet = Quartet.with('Dog', 12,'German Shepherd', 23.89); //converts to list List list = quartet.toList(); //prints list System.out.println(list); //Converts to array Object[] quartletArr = quartet.toArray(); //prints array System.out.println(Arrays.toString(quartletArr)); } } 

산출:

 [Dog, 12, German Shepherd, 23.89] [Dog, 12, German Shepherd, 23.89] 

튜플은 이기종 유형을 포함할 수 있으므로 결과 유형은 다음과 같습니다. 목록 또는 물체[] 따라서.

파이썬 경로 설정

튜플에 대한 반복

모든 튜플 클래스는 다음을 구현합니다. 반복 가능 상호 작용. 따라서 컬렉션이나 배열과 동일한 방식으로 튜플을 반복할 수 있습니다.

IterateTuple.java

 import org.javatuples.Quartet; class IterateTuple { public static void main(String args[]) { //creating a quartet tuple Quartet quartet = Quartet.with('Dell', 5600.00, 34, 'Digital Solutions'); //iterate over tuple for(Object obj : quartet) { //prints elements System.out.println(obj); } } } 

산출:

 Dell 5600.0 34 Digital Solutions 

튜플 대. 목록/배열

자바 튜플
튜플 목록
쉼표로 구분된 값의 집합입니다. 괄호 . 쉼표로 구분된 값의 집합입니다. 대괄호 .
괄호는 선택 과목 . 대괄호는 필수적인 .
그것은 불변 . 그것은 변하기 쉬운 .
그것은 필요하다 더 적은 메모리. 더 많은 메모리가 필요합니다.
그것은 가지고있다 보다 적은 공장 방법. 그것은 가지고있다 공장 방법.
그것은 결정된 길이. 그것은 가지고있다 변하기 쉬운 길이.
저장한다 이질적인 데이터. 저장한다 동종의 데이터.
그것은 적합하다 크기가 큰 데이터의 양. 그것은 적합하다 작은 데이터의 양.
그것은에 저장될 수 있습니다 목록 . 내부에 보관할 수 있습니다. 튜플 .
그것은 더 빠르게 목록과 비교. 그것은 더 느리게 튜플과 비교하면.
그것은 다음과 같이 표현됩니다. t1 = (1, 2, 3, 4, 5) 그것은 다음과 같이 표현됩니다. l1 = [1, 2, 3, 4, 5]