C# Tuples em Java

C# Tuples em Java


Hoje, estive programando em Java depois de um tempo sem programar com ela. Passei um bom tempo programando com C#. Porém senti falta de uma coisa, o nosso querido Tuple.

Exemplo de Tuple em C#

Tuple<string, int> tuple = new Tuple<string, int>("Item1", 2);
string item1 = tuple.Item1; // item1 = "item1"
int item2 = tuple.Item2; // item2 = 2

Então, com esta nescessidade tentei recria-lo em Java, provavelmente há um modo melhor de fazer isto, caso haja por favor avise-me. Estou aberto para críticas e sugestões!

Código

public class Tuple<T1, T2> {

	public T1 Item1 = null;
	public T2 Item2 = null;
	
	public Tuple(T1 item1, T2 item2){
		this.Item1 = item1;
		this.Item2 = item2;
	}
}

Então utilizamos:

Tuple<String, Integer> tuple = new Tuple<String, Integer>("oi", 10);
String item1 = tuple.Item1; // item1 = "oi"
int item2 = tuple.Item2; // item2 = 10

OBS: estarei adicionando Unit, Triplet e outros junto ao Tuple

3 Curtidas

Que legal, não sabia que C# tinha isso.

2 Curtidas

Cara, quando eu conheci Tuple eu mudei completamente. É muito útil por exemplo, em um Dictionary em que você quer botar 2 ou mais valores. Antes eu fazia assim :rofl:

Dictionary<string, List<object>> dic = new Dicitonary<string, List<object>>();

E adicionava os valores:

dic.Add("key", new List<object> { 10, "teste" });

E pegava os valores por index:

object a  = dic["key"][0]; // 10
2 Curtidas

Antes de Tuples serem adicionados ao C#, você tinha que ou criar Dicts como o @TownbyHelio mostrou, ou criar structs/classes temporárias para alocar retorno de funções, ex:

class Resultado {
   int foo;
   string bar;
}

// .... code
return new Resultado() {foo = 1, bar = "baz"};

Mais info: https://www.codeproject.com/Articles/193537/C-4-Tuples

3 Curtidas