package com.xx;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Date;
import java.util.List;
/**
* 一文件格式如下:
* 12月27日
* 12月29日
* 12月26日-12月29日
* 12月29日
* 文件中有重复的日期,有日期段
* 要求:把文件中所有的日期按顺序输出,不能有重复,包含的天数;
*/
public class DataOutPut {
public static void main(String[] args) throws Exception {
int slength = "12月27日".length();
File file = new File("D:/报表.txt");
List <Date>dateList = new ArrayList<Date>();
for(String s : readFile(file)){
//日期段的情况
if(s.length() > slength ){
String[]dates = DateSection(s);
for(Date date : findDates(format(dates[0]),format(dates[1]))){
putList(dateList,date);
}
}else{//日期的情况
putList(dateList,format(s));
}
}
System.out.println("共"+dateList.size()+"天");
System.out.println("文件中的日期是:");
//对日期集合排序
Collections.sort(dateList);
for(Date d : dateList){
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
System.out.println(sdf.format(d));
}
}
/**
* 读取文件
* @param file 要读取的文件
* @return list<String>
*/
public static List<String> readFile(File file){
List<String>list = new ArrayList<String>();
BufferedReader readfile = null;
try {
readfile = new BufferedReader(new FileReader(file));
String tempString = null;
while((tempString = readfile.readLine()) != null){
if(!list.contains(tempString))
list.add(tempString);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(readfile != null){
try {
readfile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return list;
}
/**
* 某时间段之间的日期
* @param dBegin 开始时间
* @param dEnd 结束时间
* @return List<Date>
* @throws Exception
*/
public static List<Date> findDates(Date dBegin, Date dEnd) throws Exception {
if (dBegin.after(dEnd)) {
throw new Exception("开始时间不能大于结束时间");
}
List<Date> lDate = new ArrayList<Date>();
lDate.add(dBegin);
Calendar cal = Calendar.getInstance();
cal.setTime(dBegin);
while (dEnd.after(cal.getTime())) {
cal.add(Calendar.DAY_OF_MONTH, 1);
lDate.add(cal.getTime());
}
lDate.add(dEnd);
return lDate;
}
/**
* 把日期加入到list中
* @param datas 存放date的list
* @param date 要放入list的date
*/
public static void putList(List <Date>datas,Date date){
if(!datas.contains(date)){
datas.add(date);
}
}
/**
* 分离日期段
* @param DateSection
* @return 包含日期的数组
*/
public static String[] DateSection(String DateSection){
return DateSection.split("-");
}
/**
* 格式化函数 格式化成 MM月dd日
* @param s
* @return 格式化后的日期
*/
public static Date format(String s){
SimpleDateFormat sdf = new SimpleDateFormat("MM月dd日");
Date date = null;
try {
date = sdf.parse(s);
} catch (ParseException e1) {
e1.printStackTrace();
}
return date;
}
}
分享到:
相关推荐
在文件中提到的第一个面试题,需要分析一个C++程序,并预测其运行结果。此题涉及到C++的构造函数、虚函数和多态的原理。给出的程序示例中,存在一个多态的例子,其中基类A定义了一个虚函数func,并在构造函数中调用...
JavaOOP面试题 Java集合/泛型面试题 Java异常面试题 Java中的IO与NIO面试题 Java反射面试题 Java序列化面试题 Java注解面试题 多线程&并发面试题 JVM面试题 Mysql面试题 Redis面试题 Memcached面试题 MongoDB面试题 ...
有13个球,其中有一个球的重量不同于其它12个球,请用天平称3次,找个这个球 附件是我用JAVA代码实现
云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备云计算面试题之ELK面试题,运维工程师必备...
面试题总结是一个长期工作,面试不停,这份面试题总结就不会停。以后会慢慢把Java相关的面试题、计算机网络等都加进来,其实这不仅仅是一份面试题,更是一份面试参考,让你熟悉面试题各种提问情况,当然,项目部分,...
最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、...
Java是信息技术领域中...总的来说,这个压缩包为Java开发者提供了一个全面的复习资源,涵盖了从基础知识到高级应用的各种面试题,是准备Java面试的宝贵资料。求职者应深入理解和掌握这些知识点,以提高自己的竞争力。
所以面试题数量也是不少的,里面也包含了个人的一些总结和见解,比如说在集合方面的知识点有实现的各自特点,他们之间的区别,以及等等原理和实现的细节,还包含了java和前端的面试宝典,一个宝典大概有500页左右,
2023年最新版--Java+最常见的+200++面试题汇总+答案总结汇总 阿里百度美团面试题合集 大数据面试题 100道 多线程面试59题(含答案) 最新JAVA面试题总结之基础/框架/数据库/JavaWeb/Redis BIO,NIO,AIO,Netty面试题 ...
2022java面试题、JVM面试题、多线程面试题、并发编程、Redis面试题、MySQL面试题、Java2022面试题、Netty面试题、Elasticsearch面试题、Tomcat面试题、Dubbo面试题、Kafka面试题、Linux面试题、2021面试题、java面试...
实用性强:文章中的每一个面试题都是实际面试中常见的问题,对于准备Python面试的读者来说非常有用。 省时省力:读者可以在一个地方找到大量的Python面试题,避免了自己花费大量时间和精力去收集和整理。 适合不同...
【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】zookeeper面试题【BAT必备】...
这个里面是Java的详细理解和详解,里面分为3个不同老师理解的面试题可以,看一下看看自己理解多少。每一个都是不一样的,分为:基础知识、...这个只是一个面试题总结里面的,另外两个也都差不多只是每个有一些差距。
(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题(含答案).pdf(完整版)运维面试题...
面试题包含了不同技术层面的面试问题,同时也能对一些没有面试开发经验的小白给予不可估量的包装, 让你的薪水绝对翻倍, 本人亲试有效.Java面试题84集、java面试专属及面试必问课程,所有的面试题有视屏讲解, 解答方案....
【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题【BAT必备】dubbo面试题...
18.md 5个典型的JavaScript面试题(上) JavaScript 19.md 再来5个JavaScript面试题 JavaScript 20.md BAT web前端开发方向校招都考些什么? General 21.md Eleme 笔试题 General 22.md 一些JS题目的解答 ...
ERP工程师面试题ERP工程师面试题ERP工程师面试题ERP工程师面试题
面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题面试题...