Galera, estou lendo nomes de um arquivo .txt e acrescentando em uma lista. Logo após, quero ordenar esses nomes mas nao estou conseguindo, esta dando erro de execução na “Collections.sort(lista);”
Algué pode me ajudar?
Segue o código abaixo:
package ordenaLista;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class OrderarLista implements Comparable{
private String name = "";
/**
* @param args
*/
public static void main(String[] args) {
try {
File file = new File("C:/PH/Teste/workspace/nomes.txt");
FileReader reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
List lista = new ArrayList<String>();
while(br.ready()){
String linha = br.readLine();
lista.add(br.readLine());
System.out.println("lista: "+lista);
}
Collections.sort(lista);
for (int i=0; i<lista.size();i++){
System.out.println("Lista: "+lista.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public int compareTo(Object o) {
String obj = (String) o;
return name.compareTo(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
bom dia raphael01,
para melhor visualização do seu código favor posta-lo entre as tags “[ code ] [ /code ]” (sem espaço e aspas).
Assim:
package ordenaLista;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class OrderarLista implements Comparable{
private String name = "";
/**
* @param args
*/
public static void main(String[] args) {
try {
File file = new File("C:/PH/Teste/workspace/nomes.txt");
FileReader reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
List lista = new ArrayList<String>();
while(br.ready()){
String linha = br.readLine();
lista.add(br.readLine());
System.out.println("lista: "+lista);
}
Collections.sort(lista);
for (int i=0; i<lista.size();i++){
System.out.println("Lista: "+lista.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public int compareTo(Object o) {
String obj = (String) o;
return name.compareTo(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Fiz alguns ajustes.
package ordenaLista;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class OrderarLista implements Comparable{
private String name = "";
/**
* @param args
*/
public static void main(String[] args) {
try {
File file = new File("C:/PH/Teste/workspace/nomes.txt");
FileReader reader = new FileReader(file);
BufferedReader br = new BufferedReader(reader);
List lista = new ArrayList<String>();
while(br.ready()){
String linha = br.readLine();
lista.add(linha);
System.out.println("lista: "+lista);
}
Collections.sort(lista);
for (int i=0; i<lista.size();i++){
System.out.println("Lista: "+lista.get(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
public int compareTo(Object o) {
String obj = (String) o;
return name.compareTo(name);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Ok PEdro.
Segue o erro
java.lang.NullPointerException
at java.lang.String.compareTo(Unknown Source)
at java.lang.String.compareTo(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at ordenaLista.OrderarLista.main(OrderarLista.java:29)
Isso ai quer dizer que a sua lista esta vazia, você tem certeza que ela esta sendo preenchida?
Segue exemplo:
class Ordena implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
return o1.compareTo(o2);
}
}
Collections.sort(list, new Ordena());
Esse erro deu com o ajuste que eu fiz já?
Consegui resolver galera.
Fui ver se a lista estava vazia seguindo o conselo do lucas e o erro estava no código abaixo:
while(br.ready()){
String linha = br.readLine();
lista.add(br.readLine());
System.out.println("lista: "+lista);
}
Em 2 momentos eu usei o “br.readLine();”, assim era incrementado na lista de 2 em dois e quando chegava no ultimo registro, ele pulava e dava Null.
Retirei a linha “String linha = br.readLine();” e funcionou.
Obrigado.
então edita seu topico e coloque a tag [RESOLVIDO] nele para melhor organização do forum.
obrigado