Java 如何从文本文件中的单词填充ArrayList?
我有一个文本文件,包含用换行符分隔的单词,格式如下:Java 如何从文本文件中的单词填充ArrayList?,java,arraylist,file-handling,Java,Arraylist,File Handling,我有一个文本文件,包含用换行符分隔的单词,格式如下: >hello >world >example 如何创建ArrayList并将每个单词存储为元素?最简单的方法是使用: File File=new文件(“foo.txt”); List words=Files.readLines(文件,Charsets.UTF_8); (不能保证它是一个ArrayList,但我希望这不重要。)最简单的方法是使用: File File=new文件(“foo.txt”); List
>hello
>world
>example
如何创建ArrayList并将每个单词存储为元素?最简单的方法是使用:
File File=new文件(“foo.txt”);
List words=Files.readLines(文件,Charsets.UTF_8);
(不能保证它是一个ArrayList
,但我希望这不重要。)最简单的方法是使用:
File File=new文件(“foo.txt”);
List words=Files.readLines(文件,Charsets.UTF_8);
(不能保证是
ArrayList,但我希望这没关系。)您逐行读取文件,为字符串创建ArrayList,如果line.length>0,则向定义的ArrayList添加line.substring(1)。您逐行读取文件,为字符串创建ArrayList,然后添加line.substring(1)如果line.length>0,则返回到定义的ArrayList。您可以使用apache commons
我认为它返回的列表已经是一个ArrayList
,但是您可以使用构造函数来确保获得一个
我认为它返回的列表已经是一个ArrayList
,但是你可以使用构造函数来确保你得到一个;如果您运行以下命令,它将填充一个包含单词的ArrayList并打印它们
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
File file = new File("C:\\file.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
List<String> lines = new ArrayList<String>();
String line = br.readLine();
while(line != null) {
lines.add(line.replace(">", ""));
line = br.readLine();
}
for(String l : lines) {
System.out.println(l);
}
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.util.ArrayList;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args)引发异常{
File File=新文件(“C:\\File.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(文件));
列表行=新的ArrayList();
String line=br.readLine();
while(行!=null){
行。添加(行。替换(“>”,“);
line=br.readLine();
}
用于(字符串l:行){
系统输出打印LN(l);
}
}
}
我把文件放在“C:\file.txt”;如果您运行以下命令,它将填充一个包含单词的ArrayList并打印它们
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) throws Exception {
File file = new File("C:\\file.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
List<String> lines = new ArrayList<String>();
String line = br.readLine();
while(line != null) {
lines.add(line.replace(">", ""));
line = br.readLine();
}
for(String l : lines) {
System.out.println(l);
}
}
}
导入java.io.BufferedReader;
导入java.io.File;
导入java.io.FileReader;
导入java.util.ArrayList;
导入java.util.List;
公共班机{
公共静态void main(字符串[]args)引发异常{
File File=新文件(“C:\\File.txt”);
BufferedReader br=新的BufferedReader(新文件读取器(文件));
列表行=新的ArrayList();
String line=br.readLine();
while(行!=null){
行。添加(行。替换(“>”,“);
line=br.readLine();
}
用于(字符串l:行){
系统输出打印LN(l);
}
}
}
我确信有很多库都是用一行代码实现的,但这里有一个“纯”Java实现:
请注意,我们已经“包装”/“装饰”了一个标准的文件读取器(一次只读取一个字节)和一个BufferedReader,这为我们提供了一个更好的readLine()方法
BufferedReader读取器=null;
试一试{
reader=新的BufferedReader(新的InputStreamReader(
新文件输入流(“test.txt”),
字符集forName(“ISO-8859-1”);
列表行=新的ArrayList();
弦线;
而((line=reader.readLine())!=null){
行。添加(行);
}
系统输出打印项次(行);
}捕获(IOE异常){
e、 printStackTrace();
}最后{
if(读卡器!=null){
reader.close();
}
}
我确信有很多库都是用一行代码实现的,但这里有一个“纯”Java实现:
请注意,我们已经“包装”/“装饰”了一个标准的文件读取器(一次只读取一个字节)和一个BufferedReader,这为我们提供了一个更好的readLine()方法
BufferedReader读取器=null;
试一试{
reader=新的BufferedReader(新的InputStreamReader(
新文件输入流(“test.txt”),
字符集forName(“ISO-8859-1”);
列表行=新的ArrayList();
弦线;
而((line=reader.readLine())!=null){
行。添加(行);
}
系统输出打印项次(行);
}捕获(IOE异常){
e、 printStackTrace();
}最后{
if(读卡器!=null){
reader.close();
}
}
公共静态void main(字符串[]args)引发IOException{
//TODO自动生成的方法存根
File file = new File("names.txt");
ArrayList<String> names = new ArrayList<String>();
Scanner in = new Scanner(file);
while (in.hasNextLine()){
names.add(in.nextLine());
}
Collections.sort(names);
for(int i=0; i<names.size(); ++i){
System.out.println(names.get(i));
}
File File=new文件(“names.txt”);
ArrayList name=新的ArrayList();
扫描仪输入=新扫描仪(文件);
while(在.hasNextLine()中){
name.add(in.nextLine());
}
集合。排序(名称);
for(inti=0;ipublicstaticvoidmain(String[]args)抛出IOException{
//TODO自动生成的方法存根
File file = new File("names.txt");
ArrayList<String> names = new ArrayList<String>();
Scanner in = new Scanner(file);
while (in.hasNextLine()){
names.add(in.nextLine());
}
Collections.sort(names);
for(int i=0; i<names.size(); ++i){
System.out.println(names.get(i));
}
File File=new文件(“names.txt”);
ArrayList name=新的ArrayList();
扫描仪输入=新扫描仪(文件);
while(在.hasNextLine()中){
name.add(in.nextLine());
}
集合。排序(名称);
对于(int i=0;iIt看起来像一个普通的家庭作业-请添加标记,如果是这样的话。它看起来像一个普通的家庭作业-请添加标记,如果是这样的话。我使用了line.substring(1),因为他的示例在每行的开头都有一个“>”。我使用了line.substring(1)因为他的示例包含在每行的开头都有一个“>”。请注意,这将使用默认字符编码,这通常不是一个好主意。我建议使用围绕FileInputStream的InputStreamReader。此外,close
调用应该在finally
块中。我建议让IOExceptionn
也向调用方发出气泡。请注意,这将使用默认字符编码,这通常不是一个好主意。我建议使用围绕文件InputStream的InputStreamReader。此外,关闭
调用应该在最后
块中。我建议让IOException
气泡向上到达ca