Bom dia pessoal!
Estou fazendo um pequeno programa de registros em uma agenda e gostaria de saber se existe algum método na coleção TreeMap que me retorne o próximo e o elemento anterior. Tipo, é uma TreeMap de valores <String1, String2) onde String1 é o nome da pessoa que foi inserida e String2 é o toString da classe contendo todos os dados. Na agenda clico no botão próximo e queria que me retornasse a próxima pessoa em ordem alfabética(já que TreeMap insere ordenado). Tem como??
O valor anterior pode ser obtido chamando-se o método headMap, e se este retornar um mapa não-vazio, use lastKey.
O próximo valor pode ser obtido chamando-se o método tailMap (que deve retornar os valores maiores ou iguais ao valor passado), e você deve pegar então o segundo elemento (ande sobre o mapa com um Iterator.).
import java.util.*;
class TesteTreeMap {
public static void main (String[] args) {
SortedMap<String,String> politicos = new TreeMap<String,String>();
politicos.put ("Lula", "presidente");
politicos.put ("Serra", "governador");
politicos.put ("Kassab", "prefeito");
politicos.put ("Marta", "candidata");
System.out.println ("Lista de politicos: " + politicos);
// Vamos listar o politico que vem antes de Kassab
String antes = ((NavigableSet<String>)politicos.keySet()).lower ("Kassab");
System.out.println (antes); // deve imprimir "null" pois ele é o primeiro do treemap
// Vamos listar o politico que vem antes de Lula
antes = ((NavigableSet<String>)politicos.keySet()).lower ("Lula");
System.out.println (antes); // deve imprimir "Kassab"
// Vamos listar o politico que vem depois de Marta
String depois = ((NavigableSet<String>)politicos.keySet()).higher ("Marta");
System.out.println (depois); // deve imprimir "Serra"
// Vamos listar o politico que vem depois de Serra
depois = ((NavigableSet<String>)politicos.keySet()).higher ("Serra");
System.out.println (depois); // deve imprimir "null" porque ele é o último do treemap
}
}
Thingol, você sabe se existe outro tipo de comando que não seja este Navigable para fazer a mesma coisa? Aqui na empresa utilizamos java 5 esse método não é aceito! Tem como?