
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 如何读取文件中的数据,并且搜索等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)