Métodos para Tuples - Java

Métodos novos para Tuples - Java

Este é um repost, o outro bugou, por favor Staff remove o post que eu postei sem querer.

No meu último post, comentei que tinha feito um Tuple em Java.
E hoje fiz algumas coisas novas, como métodos.

Por que usar Tuples?

É uma forma simples de retornar varios valores em um método:

public static Pair<String, Integer> getPair(){
	return new Pair<String, Integer>("Valor1", 2);
}

Ou então, quando você precisa armazenar mais de 1 valor em um HashMap, exemplo:

HashMap<String, Pair<String, Double>> map = new HashMap<String, Pair<String, Double>>();

Há casos em que você criar um tipo é melhor, exemplo:

package me.Townby;

public class Cachorro {

	public String Nome;
	public int Vida;
	public int Idade;
	
	public Cachorro(String nome, int vida, int idade) {
		Nome = nome;
		Vida = vida;
		Idade = idade;
	}
}

Array de objects

Método que retorna um array dos itens do tuple (método private)

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

private final Object[] getArray() {
	Object[] array = new Object[] {
			this.Item1,
			this.Item2
	};
		
	return array;
}

Métodos

  • [tuple].contains(Object value) - boolean
public final boolean contains(final Object value) {
	for (Object o : this.getArray()) {
		if (o.equals(value)) {
			return true;
		}
	}
	
	return false;
}

Utilizamos, por exemplo:

Pair<String, Integer> eu = new Pair<String, Integer>("Townby",12);
		
if (eu.contains("Townby")) {
	API.log("Encontrei!");
}
else {
	API.log("Não encontrei!");
}

Output:
Screenshot_628


  • Override [tuple].toString() - String
@Override
public final String toString() {
	return this.toList().toString();
}

Utilizamos, por exemplo:

Pair<String, Integer> eu = new Pair<String, Integer>("Townby",12);
API.log(eu.toString());

Output:
Screenshot_627


  • [tuple].toArray() - Object[]
public final Object[] toArray() {
	return this.getArray();
}

Utilizamos, por exemplo:

Pair<String, Integer> eu = new Pair<String, Integer>("Townby",12);
Object[] euArray = eu.toArray();
API.log("" + euArray.length);

Output:
Screenshot_626


  • [tuple].indexOf(Object value) - int
public final int indexOf(final Object value) {
	return this.toList().indexOf(value);
}

Utilizamos, por exemplo:

Pair<String, Integer> eu = new Pair<String, Integer>("Townby",12);
API.log("" + eu.indexOf("Townby")); // Existe
API.log("" + eu.indexOf("Outro Valor")); // Não existe

Output:
Screenshot_625


  • [tuple].toList() - List
public final List<Object> toList() {
	return Arrays.asList(this.getArray());
}

Utilizamos, por exemplo:

Pair<String, Integer> eu = new Pair<String, Integer>("Townby",12);
List<Object> euList = eu.toList();

for (Object o : euList){
	API.log(o.toString()):
}

Output:
Screenshot_624


Observação

API.log é um método que criei para mandar mensagens no Console. Já que em Bukkit (Minecraft) é bem extenso:

private static LoginMain main = LoginMain.instance;

public static void log(String s) {
	main.getServer().getConsoleSender().sendMessage(s);
}

E é isto, obrigado! Em breve postarei mais conteúdo sobre isso, talvez até eu bote no Github.

Qualquer crítica ou sugestão por favor responda este post com ela!

2 Curtidas

Agora que percebi que quando você modificar algum item, o array não vai mudar, então eu fiz um método que vai subtituir o this.array

private final Object[] getArray() {
	Object[] array = new Object[] {
			this.Item1,
			this.Item2
	};
		
	return array;
}
1 Curtida

Se você colocar exemplo de usos, e vantagens, posso qualificar esse artigo como aprovado, e você leva o badge de Assistente :raised_hands:

1 Curtida

Olá, já modifiquei a postagem, desculpe pelo artigo de antes.

1 Curtida