当前位置: 首页 > 面试题库 >

分割流并从文本文件放入列表

宇文俊风
2023-03-14
问题内容

我怎样才能把所有我从一个文本文件读入的元素ArrayList < MonitoredData >使用
,其中monitoredData类有这些3个私有变量:private Date startingTime, Date finishTime, String activityLabel;

文本文件Activities.txt如下所示:

2011-11-28 02:27:59     2011-11-28 10:18:11     Sleeping        
2011-11-28 10:21:24     2011-11-28 10:23:36     Toileting   
2011-11-28 10:25:44     2011-11-28 10:33:00     Showering   
2011-11-28 10:34:23     2011-11-28 10:43:00     Breakfast

等等....

前2个字符串由一个空格分隔,然后是2个制表符,再一个空格是2个制表符。

String fileName = "D:/Tema 5/Activities.txt";

    try (Stream<String> stream = Files.lines(Paths.get(fileName))) {

        list = (ArrayList<String>) stream
                .map(w -> w.split("\t\t")).flatMap(Arrays::stream) 
                .collect(Collectors.toList());

    } catch (IOException e) {

        e.printStackTrace();
    }

问题答案:

您需要引入一个工厂来创建MonitoredData,例如,我正在使用a Function来创建MonitoredDatafrom
String[]

Function<String[],MonitoredData> factory = data->{
   DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   try{
     return new MonitoredData(format.parse(data[0]),format.parse(data[1]),data[2]);
     //                       ^--startingTime       ^--finishingTime      ^--label
   }catch(ParseException ex){
     throw new IllegalArgumentException(ex);
   }
};

然后,
您的代码在流上进行操作应如下所示,并且您不需要使用Collectors#toCollection强制转换结果:

list = stream.map(line -> line.split("\t\t")).map(factory::apply)  
             .collect(Collectors.toCollection(ArrayList::new));


 类似资料:
  • 问题内容: 因此,如标题所示,即时消息开始学习一些python,而即时消息处理则难以掌握。我需要完成的工作是读一些数字并将它们存储在列表中。文本文件如下所示: 基本上,这些是用于python的海龟制作形状的坐标和方向。我要讲的是,唯一的问题是使它们采用正确的格式。因此,我无法确定的是如何将这些数字从文件中提取到 A列表中,每个四个坐标是一个大列表中的一个列表。 这是我的尝试,但正如我所说,我需要一

  • 我正在处理这样的文本文件: 第01章 乱数假文 多洛·希特·阿梅特,一位杰出的献身者,他是一位临时顾问 第02章 献祭 临时行政长官 第03章 等等,多洛尔·马格纳·阿利夸。 带有分隔符,如“章”、“章”、“章”等...和1或2位数(“第1章”或“第01章”)。 我使用和 现在我需要拆分我的字符串,以便获得“第二十章”的文本。 对于第02章,这将是: 献祭 临时行政长官 我是Python新手,我读

  • null > 构造函数,它接受两个输入:(String,String)。这两个输入以正确的顺序表示lastname和firstname。构造函数只需将参数中的数据分配给实例变量。 名为toString()的公共实例方法,它返回一个字符串数据(学生的姓名),格式为“lastname,firstname”。 类MainApp null

  • 我有这个网址 当页面加载时,我需要从url获取表名的文本。我试过这个 它返回。但是我需要表名作为。 我怎样才能得到这个?

  • 我读过其他一些类似于此的问题,但都使用了imports和extras,除了importjava.io.*之外,我不想使用任何imports;也没有任何名单。另外,这个is方法中的for循环是我在搞乱它,因为我无法弄清楚它。 }public static void main(string[]args)抛出IOException,FileNotFoundException{int[]array=pro

  • 我是新使用python阅读文本文件。我需要读一个文件,每行有4个我需要的数据,这是我的文本文件 我的问题是,如果我使用,它只用每行创建一个向量,但是我只需要一个向量用于第一列,一个用于第二列,一个用于第三列,还有一个用于第四列...有谁能帮帮我吗?