JAVA:如何按字母顺序对从文件读取并输出到控制台的字符串进行排序?
我想按姓氏的字母顺序将从文件中读取的联系人排序到控制台?我该怎么做呢?联系人已写入以姓氏开头的文件,我只想在用户希望在控制台中查看联系人时,按字母顺序将其读回应用程序JAVA:如何按字母顺序对从文件读取并输出到控制台的字符串进行排序?,java,addressbook,contact,Java,Addressbook,Contact,我想按姓氏的字母顺序将从文件中读取的联系人排序到控制台?我该怎么做呢?联系人已写入以姓氏开头的文件,我只想在用户希望在控制台中查看联系人时,按字母顺序将其读回应用程序 // Read from file, print to console. by XXXXX // ---------------------------------------------------------- int counter = 0; Strin
// Read from file, print to console. by XXXXX
// ----------------------------------------------------------
int counter = 0;
String line = null;
// Location of file to read
File file = new File("contactlist.csv");
try {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
line = scanner.nextLine();
System.out.println(line);
counter++;
}
scanner.close();
} catch (FileNotFoundException e) {
}
System.out.println("\n" + counter + " contacts in records.");
}
break;
// ----------------------------------------------------------
// End read file to console. by XXXX
打印前,将每一行添加到已排序集,如下所示:
设置行=新树集();
while(scanner.hasNextLine()){
line=scanner.nextLine();
行。添加(行);
计数器++;
}
for(字符串文件行:行){
System.out.println(文件行);
}
打印前,将每行添加到已排序的集合中,作为:
设置行=新树集();
while(scanner.hasNextLine()){
line=scanner.nextLine();
行。添加(行);
计数器++;
}
for(字符串文件行:行){
System.out.println(文件行);
}
从文件中读取名称,将其放入类别SortedSet的对象中。从文件中读取名称,将其放入类别SortedSet的对象中。包main.java.com.example;
package main.java.com.example;
import java.io.*;
import java.net.URL;
import java.util.Set;
import java.util.TreeSet;
public class ReadFromCSV {
public static void main(String[] args) {
try {
final ClassLoader loader = ReadFromCSV.class.getClassLoader();
URL url = loader.getResource("csv/contacts.csv");
if (null != url) {
File f = new File(url.getPath());
BufferedReader br = new BufferedReader(new FileReader(f));
Set<String> set = new TreeSet<String>();
String str;
while ((str = br.readLine()) != null) {
set.add(str);
}
for (String key : set) {
System.out.println(key);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
导入java.io.*;
导入java.net.URL;
导入java.util.Set;
导入java.util.TreeSet;
公共类ReadFromCSV{
公共静态void main(字符串[]args){
试一试{
final ClassLoader=ReadFromCSV.class.getClassLoader();
URL=loader.getResource(“csv/contacts.csv”);
如果(null!=url){
文件f=新文件(url.getPath());
BufferedReader br=新的BufferedReader(新文件读取器(f));
Set=新树集();
字符串str;
而((str=br.readLine())!=null){
set.add(str);
}
for(字符串键:设置){
系统输出打印项次(键);
}
}
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
package main.java.com.example;
导入java.io.*;
导入java.net.URL;
导入java.util.Set;
导入java.util.TreeSet;
公共类ReadFromCSV{
公共静态void main(字符串[]args){
试一试{
final ClassLoader=ReadFromCSV.class.getClassLoader();
URL=loader.getResource(“csv/contacts.csv”);
如果(null!=url){
文件f=新文件(url.getPath());
BufferedReader br=新的BufferedReader(新文件读取器(f));
Set=新树集();
字符串str;
而((str=br.readLine())!=null){
set.add(str);
}
for(字符串键:设置){
系统输出打印项次(键);
}
}
}catch(filenotfounde异常){
e、 printStackTrace();
}捕获(IOE异常){
e、 printStackTrace();
}
}
}
扫描文件时,将每一行(可能解析为对象)添加到列表中,对列表进行排序,然后打印出来。文件有多大?可以将所有内容加载到内存中吗?文件非常小。它就像一个200kb的文件。但是,如果用户可以向该文件添加更多信息,那么它可能会成为一个大文件。在扫描该文件时,将每一行(可能解析为一个对象)添加到列表中,并对列表进行排序,然后打印出来。该文件有多大?可以将所有内容加载到内存中吗?文件非常小。它就像一个200kb的文件。但是,如果用户可以向该文件添加更多信息,则该文件可能会成为一个大文件。请尝试此操作。然而,它说我有一个“重复的局部变量行”,并且不会运行。如果我重命名字符串,我会得到一个不按字母顺序排列的正常输出。@user2149907:该集合的名称为“lines”,而字符串的名称为“line”。您没有输入错误吗?“String line=null;”正在导致重复。@user2149907:我在for循环中输入了字符串的名称,该名称与上一个变量的名称相同。效果非常好。然而,他们是否只是一个简单的调整来忽略这个案例?比如,亚当斯,亚当斯?它将在小写字母前打印棕色。但是,将在Brown之前打印大写的Adams。但是,再一次。非常感谢。效果很好,试过了。然而,它说我有一个“重复的局部变量行”,并且不会运行。如果我重命名字符串,我会得到一个不按字母顺序排列的正常输出。@user2149907:该集合的名称为“lines”,而字符串的名称为“line”。您没有输入错误吗?“String line=null;”正在导致重复。@user2149907:我在for循环中输入了字符串的名称,该名称与上一个变量的名称相同。效果非常好。然而,他们是否只是一个简单的调整来忽略这个案例?比如,亚当斯,亚当斯?它将在小写字母前打印棕色。但是,将在Brown之前打印大写的Adams。但是,再一次。非常感谢。效果很好。
package main.java.com.example;
import java.io.*;
import java.net.URL;
import java.util.Set;
import java.util.TreeSet;
public class ReadFromCSV {
public static void main(String[] args) {
try {
final ClassLoader loader = ReadFromCSV.class.getClassLoader();
URL url = loader.getResource("csv/contacts.csv");
if (null != url) {
File f = new File(url.getPath());
BufferedReader br = new BufferedReader(new FileReader(f));
Set<String> set = new TreeSet<String>();
String str;
while ((str = br.readLine()) != null) {
set.add(str);
}
for (String key : set) {
System.out.println(key);
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}