【Java】一行代码读完记事本中的二维表

对于如下图所示这种用记事本中的二维表:


如果要读入Java的容器中,也就是将上述的txt转化成ArrayList<ArrayList<String>>,大家可能又绞尽脑汁地思考读入类、读入方法怎么写。

隐约估计完成这样的工程大概需要十几行左右的代码吧?其实并不需要,一行代码就能做完这事。

具体如下:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class ReadTable {
	public static void main(String[] args) throws FileNotFoundException{
		ArrayList<ArrayList<String>> T = new ArrayList<ArrayList<String>>();
		Scanner scanner = new Scanner(new File("d:\\1.txt"));//指定读入文件
		while (scanner.hasNext()) {//将txt中的二维表读入T中
			T.add(new ArrayList<String>(Arrays.asList(scanner.nextLine().split(" "))));
		}
		scanner.close();//必须关闭这个流,否则有警告。		
		//打印T
		for(int i=0;i<T.size();i++){
			System.out.println(T.get(i));
		}
	}
}
运行结果如下:


实际上上述程序,最关键就是这里:

while (scanner.hasNext()) {//将txt中的二维表读入T中
	T.add(new ArrayList<String>(Arrays.asList(scanner.nextLine().split(" "))));
}
scanner.close();//必须关闭这个流,否则有警告。	
首先,scanner.hasNext()和下面的scanner.nextLine()让Java从头到尾一行行读完这个txt,就不再赘述了,之前在《【Java】输入与输出与JDK1.5之后的新型字符串StringBuilder》( 点击打开链接)已经详细说明了。

然后,由于这个txt每一行的元素,都是通过空格来分隔。scanner.nextLine()读进来的每一行东西是一个String,因此可以利用String中的split方法,以空格为分隔符,形成一个字符串数组,里面的每一个元素,就是各个被空格分隔的元素。

最后,再利用Arrays中的asList的方法,配合new ArrayList<String>将这个字符串数组,转化成ArrayList<String>。由于T是一个ArrayList<ArrayList<String>>,因此利用T的add,将这个ArrayList<String>压进去则可以了。这也成功打了我之前在《【Java】Arrays中之于int数组的方法,Integer数组与int数组》(点击打开链接)提到Arrays中没有快捷将String数组转化成ArrayList<String>方法的脸。

因此,通过上述这个过程,完成一行代码读完记事本中的二维表的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值