将文件中的数据添加到 ArrayList 中并排序
Add data from file into ArrayList and sorting
我正在尝试将包含字符串和整数的文本文件中的数据提取到 ArrayList 中,然后对其进行排序(这将取决于整数值)。
文件模式中的文本看起来像这样 "Höllviken;23642"。用“;”分隔特点。
到目前为止我得到了这个:
public class SorteraOrter{
public static void main(String[] args)throws IOException{
// scans file orter
File stad = new File("C:\Users\Johan\Desktop\orter.txt");
Scanner n = new Scanner(stad);
ArrayList<Object> city = new ArrayList();
while(n.hasNext()){
String ln = n.nextLine();
String[] arr = ln.split(";");
Ort ort = new Ort(arr[0],Integer.valueOf(arr[1]));
city.add(ort);
}
System.out.println(city.toString());
}
}
为了排序,我声明了一些方法并创建了一个用于排序的 compareTo 方法。
:
package soter_orter;
public class Ort implements Comparable<Ort> {
// fields
private int postnr = 0;
private String ort = "";
// constructor
public Ort(String s, int p){s = ort; p = postnr;}
// method names
public int postnr() {
return postnr;
}
public String ort() {
return ort;
}
public int compareTo(Ort o){
return o.postnr - postnr;
}
public String toString(){
return ort + " " + postnr;
}
}
因此,首先我必须成功地将这些字符串和整数添加到我的 ArrayList 中。我还需要以某种方式将它们连接起来,因为数字和文本文件属于彼此。
我当前的问题是在尝试将文件输入移动到 ArrayList 后得到的输出 -
[ 0, 0, 0, 0, 0, 0, 0]
我更进一步,将我的 ArrayList 的元素添加到对象数组。我可以对此进行排序,但无法使用我的 toString 方法查看它。
Object[] arr = new Object[city.size()];
for (int i = 0; i<city.size(); i++){
arr[i] = city.get(i);
}
Arrays.sort(arr);
for (Ort o : arr){
}
我无法在 for 循环中打印它。我收到消息:"Type mismatch: cannot convert from element type Object to Ort"
所以,到目前为止,我无法打印 ArrayList 和对象数组。
你的构造函数错误。
替换
public Ort(String s, int p){s = ort; p = postnr;}
为
public Ort(String s, int p){ort = s; postnr = p;}
你在 Ort class 中的构造函数应该是
public Ort(String s, int p){ort=s; postnr=p;}
我正在尝试将包含字符串和整数的文本文件中的数据提取到 ArrayList 中,然后对其进行排序(这将取决于整数值)。
文件模式中的文本看起来像这样 "Höllviken;23642"。用“;”分隔特点。
到目前为止我得到了这个:
public class SorteraOrter{
public static void main(String[] args)throws IOException{
// scans file orter
File stad = new File("C:\Users\Johan\Desktop\orter.txt");
Scanner n = new Scanner(stad);
ArrayList<Object> city = new ArrayList();
while(n.hasNext()){
String ln = n.nextLine();
String[] arr = ln.split(";");
Ort ort = new Ort(arr[0],Integer.valueOf(arr[1]));
city.add(ort);
}
System.out.println(city.toString());
}
}
为了排序,我声明了一些方法并创建了一个用于排序的 compareTo 方法。 :
package soter_orter;
public class Ort implements Comparable<Ort> {
// fields
private int postnr = 0;
private String ort = "";
// constructor
public Ort(String s, int p){s = ort; p = postnr;}
// method names
public int postnr() {
return postnr;
}
public String ort() {
return ort;
}
public int compareTo(Ort o){
return o.postnr - postnr;
}
public String toString(){
return ort + " " + postnr;
}
}
因此,首先我必须成功地将这些字符串和整数添加到我的 ArrayList 中。我还需要以某种方式将它们连接起来,因为数字和文本文件属于彼此。
我当前的问题是在尝试将文件输入移动到 ArrayList 后得到的输出 -
[ 0, 0, 0, 0, 0, 0, 0]
我更进一步,将我的 ArrayList 的元素添加到对象数组。我可以对此进行排序,但无法使用我的 toString 方法查看它。
Object[] arr = new Object[city.size()];
for (int i = 0; i<city.size(); i++){
arr[i] = city.get(i);
}
Arrays.sort(arr);
for (Ort o : arr){
}
我无法在 for 循环中打印它。我收到消息:"Type mismatch: cannot convert from element type Object to Ort"
所以,到目前为止,我无法打印 ArrayList 和对象数组。
你的构造函数错误。
替换
public Ort(String s, int p){s = ort; p = postnr;}
为
public Ort(String s, int p){ort = s; postnr = p;}
你在 Ort class 中的构造函数应该是
public Ort(String s, int p){ort=s; postnr=p;}