Ajuda: Aplicação utilizando Ordenação e Indexação

Galera, desculpem a ignorância no tópico passado. É que estou realmente desesperado para fazer esse aplicativo.
Eu já desenvolvi o código para gerar o HASH e o QUICKSORT, porém não sei como faço para ler um arquivo e organizá-lo em um vetor.

Vou postar novamente:

Enunciado do trabalho:
Dado um arquivo de texto contendo os seguintes dados - código, nome, nota (dados separados por vírgula). Escreva as classes necessárias para implementar a ordenação QUICKSORT e a indexação por Espalhamento aberto - HASHDUPLO.
Os dados deverão sr lidos de um arquivo desordenado, indexados e só então deverão ser ordenados e mostrados.

A idéia da tabela HASH é gravar o código de cada um e o endereço, que será o número da linha.
Fazer a indexação lendo registro a registro armazenando-os em um vetor.

Não quero que desenvolvam para mim, mais sim, me ajudem dando dicas de por onde começar.

primeiro diga em q parte travou?
primeiro vc cria uma classe aluno que contera o codigo, o nome, e a nota…
depois vc cria um metodo que ira buscar estes alunos do txt e instanciar um objeto desta classe aluno
colocando o id, nome e nota e depois coloca este objeto aluno recem criado em uma lista ou em um array…
algo mais ou menos assim para vc buscar o arquivo txt:

 		File f = new File("caminhoArqTxt.txt");
		List lista = new ArrayList();
		BufferedReader reader = null;
        String []arrStr = null; 
		Aluno a = null;
        try {
	        reader = new BufferedReader(new FileReader(f));
		    String s = "";
		    while ((s = reader.readLine()) != null) {
		      arrStr = s.split(" ");  //Transforma a linha lida em um array de string 	
		      a = new Aluno();
		      a.id = arrStr[0];
		      a.nome = arrStr[1];
		      a.nota = arrStr[2];
		      lista.add(a);
		    }
		} catch (IOException e) {
			e.printStackTrace();
		} 
		finally {
			reader.close();
		}

claro a lista estara completamente desordenada… basta então vc ordenala com o quicksort (tem uma porrada destes na web e so procurar no google por quicksort) e depois vc deve iterar sua lista colocando no HashMap como o indice o codigo de cada objeto e como valor o objeto… mas dai e com vc… boa sorte… espero ter ajudado…

observação… não use a classe HashMap do java… faça a sua propria HashMap… provavelmente este é um exercicio de estrutura de dados ou algo assim e tem professores que tiram nota se vc aparecer com uma classe de terceiros no trabalho… por isto faça seu proprio hashmap

Agora sim você está falando língua de gente. Se quer saber apenas a parte de leitura de arquivos CSV, é relativamente tranqüilo.
É algo parecido com:

import java.io.*;
...
...
BufferedReader br = null;
try {
    br = new BufferedReader (new FileReader ("entrada.csv")); // ponha o nome do seu arquivo aqui
    for (String linha = br.readLine(); linha != null; linha = br.readLine()) 
    {
        String[] campos = linha.split (","); // quebra a linha com dados separados por vírgulas em um array de strings
        // Processe aqui os seus campos
    }
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    if (br != null) try {br.close();}catch (IOException ex) {}
}

intao terá a classe “Aluno”, a “Hash” e a classe “ordenar”? só as 3?

eu nao entendo como a classe ordenar irá pegar os arquivos, utilizar o hash p/ classificar e apos isso mostrar…

não não tera a classe ordenar… crie uma classe principal main ou seja la como que chamar e coloque nela um metodo main neste metodo vc coloca carrega o txt e pega linha por linha e a cada linha cria um novo aluno e popula os dados neste aluno depois adiciona a lista no final tera uma lista de alunos desordenada… apos isto vc ira usar o ALGORITIMO quicksort para ordenar esta lista… apos ela estar ordenada… vc cria uma instancia da classe hash e vai inserindo cada aluno da lista neste hash e como chave o codigo de cada aluno… e basicamente isto… não é dificil…

Pegar o arquivo nós já demos de mão beijada para você. Hash não consegue classificar nada; como você deve saber, ele deixa tudo desordenado, mas isso você já disse que o QuickSort resolve para você.
E para mostrar você pode usar o System.out.println mesmo, certo?

sim, pode mostrar pelo println mesmo…

ae galera, valew as dicas mais, não vou conseguir fazer…

tenho que aprender muito ainda para conseguir usar tudo isso junto (hash,arquivo,etc)

vai ficar para a próx… valew!

mais viu, se alguém disposto a fazer para mim, entre em contato p/ acertarmos um valor…
Obrigado msmo assim!

Eu tinha pensado que você realmente tinha feito o código; mas pelo que imagino você copiou de algum lugar, senão não estaria fazendo essas perguntas do tipo “como é que junto os pedaços para desenvolver minha aplicação”; é que o hash e o quicksort são bem mais complexos que “juntar os pedaços”, pelo menos na minha opinião.

na verdade os códigos de HASH e o QUICKSORT o professor criou junto com os alunos, em sala de aula…

esses dois eu tenho…

poste ai seus codigos de hash e de ordenação quem sabe podemos lhe ajudar baseando-se na maneira q foi feito…

Código HASH (foi criado em sala de aula pelo professor)

[code]import java.io.;
import java.util.
;

public class hash {

public static void main(String args[]) {
int n = Integer.parseInt(args[0]);
int i, c;
String s = "";
Integer ii;
HashMap ht = new HashMap();

c = 0;
for (i = 1; i <= n; i++)
    ht.put(Integer.toString(i, 16), new Integer(i));
for (i = 1; i <= n; i++)
    if (ht.containsKey(Integer.toString(i, 10)))
    c++;

System.out.println(c);
}

}[/code]

Código QUICKSORT (Código genérico, padrão)

[code]import java.util.Comparator;
import java.util.Random;

public class Quicksort {
public static final Random RND = new Random();
private static void swap(Object[] array, int i, int j) {
Object tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
private int partition(Object[] array, int begin, int end, Comparator cmp) {
int index = begin + RND.nextInt(end - begin + 1);
Object pivot = array[index];
swap(array, index, end);
for (int i = index = begin; i < end; ++ i) {
if (cmp.compare(array[i+1], pivot) <= 0) {
swap(array, index++, i);
} }
swap(array, index, end);
return (index);
}
private void qsort(Object[] array, int begin, int end, Comparator cmp) {
if (end > begin) {
int index = partition(array, begin, end, cmp);
qsort(array, begin, index, cmp);
qsort(array, index, end, cmp);
} }
public void sort(Object[] array, Comparator cmp) {
qsort(array, 0, array.length - 1, cmp);
}
}[/code]

para o hash e bastante simples…
basta fazer:


  HashMap m = new HashMap();

  for (int i = 0; i < lista.size(); i++) {
    Aluno a = (Aluno)lista.get(i);
    m.put(a.id,a);
  }

pronto agora vc tem um hash de objetos alunos com o id como indice…
logo apos vc pode declarar um array de alunos com o mesmo tamanho da lista e colocar
os objetos do map neste array…
pesquise sobre a classe comparator que vera exemplos praticos no final e so chamar qsort passando o array de alunos posição inicial, final e o comparator recem criado…
o comparator vai definir sua ordenação… vc pode fazer por codigo, por nome, pela nota… como desejar…