java中如何将一个txt文件中的数字读取到一个ArrayList集合中

java中如何将一个txt文件中的数字读取到一个ArrayList集合中,第1张

import javaioBufferedReader;

import javaioFile;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStream;

import javaioInputStreamReader;

import javautilArrayList;

import javautilList;

import javautilregexMatcher;

import javautilregexPattern;

public class FileParser {

private File file;

private BufferedReader reader;

private InputStream is;

private InputStreamReader isReader;

public FileParser() {}

public FileParser(String filePath) {

file = new File(filePath);

initReader();

}

/

    初始化文件输入流,为文件读取做准备

/

private void initReader() {

if(file != null && fileisFile() && filecanRead()) {

//文件存在可读取并且是“文件”而不是目录

try {

is = new FileInputStream(file);//创建文件输入流

isReader = new InputStreamReader(is);//创建输出流的Reader

reader = new BufferedReader(isReader);//用于按行读取文件

} catch (Exception e) {

eprintStackTrace();

}

}

}

/

    转换文件内容,将文件中的数据转换成List<Integer>

/

public List<Integer> parse() {

List<Integer> lstNumber = null;//最终结果保存在这里

String txtLine = null;//临时变量,保存按行读取到的字符串

String splitRegexp = "([0-9]+)\\s";//匹配数字的正则表达式

Pattern pattern = Patterncompile(splitRegexp);//编译正则

Matcher matcher = null;//正则的Matcher对象

//开始读取文件

if(reader != null) {

lstNumber = new ArrayList<Integer>();//初始化List

try {

while((txtLine = readerreadLine()) != null) {//按行读取文件

matcher = patternmatcher(txtLine);//获取matcher实例,准备进行查找

while(matcherfind()) {//查找符合条件的匹配组,将结果放入List

lstNumberadd(IntegervalueOf(matchergroup(1)));

}

}

} catch (IOException e) {

eprintStackTrace();

} finally {

//关闭流

try {

readerclose();

isReaderclose();

isclose();

} catch (IOException e) {

eprintStackTrace();

}

}

}

return lstNumber;//返回结果

}

public static void main(String[] args) {

FileParser fileParser = new FileParser("D:\\testtxt");

Systemoutprintln(fileParserparse());

}

}

testtxt内容格式如下:

1 10 100 99 5 76 82 93

20 123 75 1232 85 12

程序核心就是用正则表达式来查找文件中符合要求的内容,效率要比字符串的分割 *** 作高。大体流程就是判断文件是不是存在且可读取,然后通过BufferedReader按行取得文件内容,最后用正则表达式来分离出目标数据放入结果集中。

你存的是一个对象的属性还是存了多个对象?如果存的是对象属性,那么只要创建一个对象并用ArrayList初始化就可以了,如果是多个对象,则创建一个对象数组,再用ArrayList初始化就可以了

下面的代码为简化版,但足够解决问题楼主可以参考下,希望有所帮助

class Person{

int ID;

String name;

}

public class Test{

List<Person> list=new ArrayList<Person>();

public static Person search(String name){

for(Person person:list){

if(personnameequals(name)){

return person;//如果找到了名为name的person,返回之

}

return null;//如果没有找到,返回null

}

}

a[0],a[1], etc

int i = a number

a[i]

数组是一块连续的内存,ArrayList是一个集合对象,内部用数组维护数据,数组效率高,但是不方便使用,ArrayList好用,但是效率低点,一般数据不固定你用list就可以了,初学者把基础学好一点,继续加油

Systemoutprintln 方法输出Books对象,就会出现。

并且每次运行@后面的16进制数可能发生改变,实际上使用Systemoutprintln方法输出Books对象时,实际上输出的是Person对象的toString()方法的返回值,也就是说,下面两行代码的输出结果是一样的:

Systemoutprintln(book1);

Systemoutprintln(book1toString());

toString()方法是Object类里的一个实例方法,所有java类都是Object类的子类,因此所有java对象都具有toString方法。toString方法是一个”自我描述“方法,该方法总是返回该对象实现类的类名+@+hashCode值,这个返回值并不能真正实现”自我描述“的功能,因此如果用户需要自定义类来实现”自我描述“功能,必须重写Object的toString方法,例如下面程序:

import javautilArrayList;

import javautilList;

public class Test12 {

public static void main(String[] args) {

List<Books> bookList = new ArrayList<Books>();

Books book1 = new Books("java编程思想","Bruce Eckel",108);

Books book2 = new Books("菜根谭","洪应明",58);

Books book3 = new Books("百年孤独","加西亚·马尔克斯",108);

//添加信息

bookListadd(book1);

bookListadd(book2);

bookListadd(book3);

//获取,返回信息

for (Books book : bookList) {

Systemoutprintln(bookgetBookName()+"\t"+bookgetAuthor()+"\t"+bookgetPrice());

}

/

调用Books的toString()方法

/

Systemoutprintln(book1);

}

}

class Books{

private String bookName;

private String author;

private double price;

public Books(){

}

public Books(String bookName, String author, double price) {

thisbookName = bookName;

thisauthor = author;

thisprice = price;

}

public String toString() {

return "Books [author=" + author + ", bookName=" + bookName

+ ", price=" + price + "]";

}

public String getBookName() {

return bookName;

}

public void setBookName(String bookName) {

thisbookName = bookName;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

thisauthor = author;

}

public double getPrice() {

return price;

}

public void setPrice(double price) {

thisprice = price;

}

}

public List<UserBean> getUsersByPage(int pageNow)

{

List<UserBean> al=new ArrayList<UserBean>();

try

{

ct=new ConnDB()getConn();

rs=smexecuteQuery("select top "+pageSize+" from users where userId not in(select top "+pageSize(pageNow-1)+" userId from users) " );

while(rsnext())

{

UserBean ub=new UserBean();

ubsetUserId(rsgetInt(1));

ubsetUserName(rsgetString(2));

ubsetPasswd(rsgetString(3));

ubsetEmail(rsgetString(4));

ubsetGrade(rsgetInt(5));

aladd(ub);

}

}

catch(Exception e)

{

eprintStackTrace();

}

finally

{

thisclose();

}

return al;

}

以上就是关于java中如何将一个txt文件中的数字读取到一个ArrayList集合中全部的内容,包括:java中如何将一个txt文件中的数字读取到一个ArrayList集合中、Java中ArrayList里面存的是对象 怎么取出里面的对象并使用对象的方法、java ArrayList 如何读取文件中的数据,并且搜索等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9667248.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存