Utiliza la clases Hashmap para hacer busquedas rapidas.
El codigo comentado solo te imprime una vez las palabras repetidas
aunque no estan en orden.
Si quieres que esten en orden pero sin repetirse utiliza el for y ponle un condicional
espero te sirva.
public static void main(String [] args)
{
Hashtable v = new Hashtable();
String [] arreglo = {"hola","espero","que","estes","bien","ojala","que","descanses","bien","que","descanses"};
for(int i=0;i<arreglo.length;i++)
{
Vector vector = (Vector)v.get(arreglo[i]);
if( vector == null )
{
vector = new Vector();
v.put(arreglo[i],vector);
}
if( i< arreglo.length-2)
vector.addElement(arreglo[i+1]);
}
/*
Enumeration e = v.keys();
while(e.hasMoreElements())
{
String key = (String)e.nextElement();
System.out.print(key+"-> ");
Vector vector = (Vector)v.get(key);
for(int j=0;j<vector.size();j++)
{
String str = (String)vector.elementAt(j);
System.out.print(str+"("+(j+1)+")");
}
System.out.println();
}
/*/
for(int i=0;i<arreglo.length;i++)
{
String key = arreglo[i];
System.out.print(key+"-> ");
Vector vector = (Vector)v.get(key);
for(int j=0;j<vector.size();j++)
{
String str = (String)vector.elementAt(j);
System.out.print(str+"("+(j+1)+")");
}
System.out.println();
}
//*/
}