Ajuda com listas

Boa noite.

Agradecia alguma ajuda com um pequeno programa que me pediram para fazer. O meu problema é que não sei bem trabalhar com listas. O que consegui fazer até agora foi isto (e nem sei bem se está bem porque nem consigo pôr isto a imprimir…) :roll:

package pacote;

import javax.swing.JOptionPane;

public class menu {
    public static int opcoes() {
        int op;
        do {
            String a = "Menu"
                    + "\n1 - Inserir frase"
                    + "\n2 - Inverter palavras do texto"
                    + "\n3 - Palavras não repetidas, frequência e ocorrência"
                    + "\n4 - Eliminar palavra"
                    + "\n5 - Eliminar palavras entre x e y"
                    + "\n6 - Mover nós"
                    + "\n7 - Copiar nós"
                    + "\n8 - Imprimir listas"
                    + "\n0 - Sair";
            op = Integer.parseInt(JOptionPane.showInputDialog(a + "\nOpção? (0 a 8)"));
        }
            while ((op < 0) || (op > 8));
            return op;
    }
    public static void main(String[] args) {
        lista A = new lista();
        lista B = new lista();
        int opcao = opcoes();
        while (opcao != 0) {
            String frase;
            switch (opcao) {
            case 1: {
                do
                    frase = JOptionPane.showInputDialog("Introduza frase: ");
                while (frase.compareTo("") == 0);
                A.recebefrase(frase);
                break;
            }
            
            case 2: {
                do
                    frase = JOptionPane.showInputDialog("Introduza frase: ");
                while (frase.compareTo("") == 0);
                B.recebefrase2(frase);
                break;
            }
            
            case 3: {
               
                break;
            }
}
        }
            
    }
}



package pacote;

import java.util.*;

public class lista {
	
		private No cab;
		
		
		public void recebefrase(String frase){
			
			String [] palavras = frase.split(" ");
			for (int i = 0; i < palavras.length-1; i++){
				this.inserirOrdenado(palavras[i]);
			}
				
		}
		
		
		public void recebefrase2(String frase){
			
			String [] palavras = frase.split(" ");
			for (int i = 0; i < palavras.length-1; i++){
				this.inserirInvertido(palavras[i]);
			}
				
		}
		
		public void inserirOrdenado(String palavra){
			
			No novo=new No(palavra);
			
			No temp=cab;
			
				while((temp.getProx()!=null)&&(temp.getProx().getPalavra().compareTo(novo.getPalavra())<0)){
					temp=temp.getProx();			
				}
				
				novo.setProx(temp.getProx());
				novo.setAnt(temp);
				
				temp.setProx(novo);
					
		}
	
		public void inserirInvertido(String palavra){
			
			No novo=new No(palavra);
			
			No temp=cab;
			
				while((temp.getProx()!=null)&&(temp.getProx().getPalavra().compareTo(novo.getPalavra())>0)){
					temp=temp.getProx();			
				}
				
				novo.setProx(temp.getProx());
				novo.setAnt(temp);
				
				temp.setProx(novo);
					
		}	
		
	
		public String imprimir()
		{
			String st = "";
			if (cab.getProx() != cab)
			{
				No temp = cab.getProx();
				while(temp != cab)
				{
					st += temp.getPalavra() + " ";
					temp = temp.getProx();
				}
			}
			else
				st += "A Lista está vazia!";
			
			return st;
		}
}
package pacote;

public class No {
	
	private String palavra;
	private No prox;
	private No ant;
	
	public No(String palavra){
		this.palavra=palavra;
	}
		
	public String getPalavra() {
		return palavra;
	}
	public void setPalavra(String palavra) {
		this.palavra = palavra;
	}
	public No getProx() {
		return prox;
	}
	public void setProx(No prox) {
		this.prox = prox;
	}
	public No getAnt() {
		return ant;
	}
	public void setAnt(No ant) {
		this.ant = ant;
	}
	
	
}

Agradeço, desde já, qualquer ajuda.

Vc precisa exatamente trabalhar com a sua lista ou pode usar a lista de java: LINKEDLIST?

Preciso. Não estou ainda na fase de usar linkedlists. E já optei por usar uma lista encabeçada, embora não seja pedido para esta fase até onde cheguei…

Os objectivos do projecto são:

A partir de um texto faça as seguintes operações:
a) Crie uma lista encadeada, onde cada nó da lista representa cada palavra do
texto.
b) Crie uma nova lista, que representa as palavras do texto por ordem inversa;
c) Crie uma lista bidireccional ordenada, que deve conter apenas as palavras
não repetidas do texto inicial, com indicação da frequência absoluta de
ocorrência de cada uma;
d) Elimine da lista criada em a) todas as ocorrências de uma dada palavra.
e) Elimine da lista criada em c) todas as palavras entre x e y, sendo x e y
palavras introduzidas pelo utilizador.
f) Mova um conjunto de nós da lista criada em a) para um outro local nessa
mesma lista (operação tipo cortar e colar).
g) Copie um conjunto de nós da lista criada em a) para um outro local nessa
mesma lista (operação tipo copiar e colar).
h) Permita imprimir as diferentes listas.

Obrigado pela resposta.

Bom dia.

Se alguém pudesse ajudar, agradecia. Tenho que entregar isto hoje… :?