Organizador de strings com lista encadeada java

tenho que criar um programa que organiza strings(a,b,c) em ordem alfabética com lista encadeada em java, que siga as condições abaixo.

receber os elementos e colocá-lo na ordem correta;
retirar os itens repetidos;
fazer a busca de um item e dizer quantos “saltos” foram necessários pra chegar neste desde o head;

mais estou com dificuldades para entender lista encadeada

Ajudamos com dúvidas e problemas referentes a códigos. Não fazemos suas atividades.
Se quer aprender oque é, pesquisa, no youtube tem muita vídeo-aula sobre isso.
Depois tente fazer, e quando tiver com problemas no código poste aqui.
T+

Assista todos os vídeos que tenham referência a collections:

Ao ordenar seus elementos e remover os repetidos, você terá a lista da forma encadeada.

vou colocar o código que fiz logo abaixo.

classe node

public class Node {
private Node proximo;
private Object informacao;

public Node(Node proximo, Object informacao){
	this.proximo = proximo;
	this.informacao = informacao;
}

public Node(Object informacao){
	this.informacao = informacao;
}

public Node getProximo() {
	return proximo;
}

public void setProximo(Node proximo) {
	this.proximo = proximo;
}

public Object getInformacao() {
	return informacao;
}

public void setInformacao(Object informacao) {
	this.informacao = informacao;
}

}

classe lista encadeada

public class ListaEncadeada {
private Node cabeca;

boolean verifica = false;

public void adicionaUltimo(String informacao) {
	Node newNode = new Node(null, informacao);

	if (cabeca == null) {
		cabeca = newNode;
	} else {
		Node atual = cabeca;

		while (atual.getProximo() != null) {
			atual = atual.getProximo();
		}
		atual.setProximo(newNode);

	}

}

public boolean contem(String informacao) {
	Node node = new Node(null, informacao);

	while (node != null) {
		if (node.getInformacao().equals(informacao)) {
			return true;
		}
		node = node.getProximo();
	}
	return false;
}

public String toString() {

	if (this.cabeca == null) {
		return "[]";
	}
	StringBuilder builder = new StringBuilder("[");

	Node atual = cabeca;

	// Percorrendo até o penúltimo elemento.
	while (atual != null) {

		builder.append(atual.getInformacao());
		if (atual.getProximo() != null)
			builder.append(", ");
		atual = atual.getProximo();
	}
	// ultimo elemento

	builder.append("]");

	return builder.toString();
}

}

void main
import java.util.Arrays;

public class Teste {

public static void main(String[] args) {

	ListaEncadeada lista = new ListaEncadeada();
	String vetor[] = new String[10];
	vetor[0] = "a";
	vetor[1] = "b";
	vetor[2] = "a";
	vetor[3] = "g";
	vetor[4] = "d";
	vetor[5] = "e";
	vetor[6] = "f";
	vetor[7] = "g";
	vetor[8] = "c";
	vetor[9] = "h";
	Arrays.sort(vetor);

	for (int i = 0; i < vetor.length; i++) {
		
		if (lista.contem(vetor[i]) != true) {
			
			System.out.println(vetor[i]);

		} else {

			lista.adicionaUltimo(vetor[i]);
		}

	}

	System.out.println(lista);
	//System.out.println(lista.verifica);
}

}