java 中 时间
年 月
1991 11
1991 12
1992 01
1992 08
1992 09
1992 10
1993 10
1994 05
1994 06
组成之后效果变成
开始年月终止年月
199111 199201
199208 199210
199310 199310
199405 199406
那位大侠能指导下啊?用java代码
[最优解释]
package com.test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args){
Map<String,String> map=new HashMap<String,String>();
String[] data={"1991-11","1991-12","1992-01","1992-08","1992-09","1992-10","1993-10","1994-05","1994-06"};
for(int i=0;i<data.length;i++){
String one=data[i];
String[] new1=one.split("-");
for(int j=0;j<data.length;j++){
String two=data[j];
String[] new2=two.split("-");
if((new1[0].equals(new2[0]) && (Integer.valueOf(new2[1])-Integer.valueOf(new1[1])==1))){//这里循环判断同年不同月的
System.out.println(one+"------"+two);
map.put(one, two);
}else if(new1[1].equals("12") && new2[1].equals("01") && (Integer.valueOf(new2[0])-Integer.valueOf(new1[0])==1)){//这里判断年相差1年,月分别是12和01月
System.out.println(one+"*****"+two);
map.put(one, two);
}
}
}
//这里遍历数据,看那些数据在map里面存在,则放入map中,键,值都是本身
for(int i=0;i<data.length;i++){
if(!map.containsKey(data[i]) && !map.containsValue(data[i])){
map.put(data[i], data[i]);
}
}
//这里是结果的result Map对象,处理类容
//1992-08 1992-09 和1992-09 1992-10组合成1992-08 1991-10
Map<String,String> result=new HashMap<String,String>();
for(String key:map.keySet()){
String value=map.get(key);
if(map.containsKey(value)){
result.put(key, map.get(value));
}else if(!map.containsValue(key)){
result.put(key, value);
}
}
for(String key:result.keySet()){
System.out.println(key+" "+result.get(key));
}
}
}
package test;
public class T1 {
/**
* @param args
*/
static int year[] = { 1991, 1991, 1992, 1992, 1992, 1992, 1993, 1994, 1994 };
static int month[] = { 11, 12, 1, 8, 9, 10, 10, 05, 06 };
static int pointer = 0;
public static int next() {
if (pointer >= year.length) {
return -1;
}
return pointer++;
}
/**
* 是否为连续的年月
*
* @param y1
* @param m1
* @param y2
* @param m2
* @return
*/
static boolean isSequence(int y1, int m1, int y2, int m2) {
if (y1 == y2) {
return m2 - m1 == 1;
}
return m1 == 12 && m2 == 1;
}
public static void main(String[] args) {
int p = next();
int tmp = -1;
while (p != -1) {
// 如果是第一个数,则打印
if (tmp == -1) {
System.out.printf("%4d%02d\t", year[p], month[p]);
}
tmp = next();
// 如果没有下一个数,则输出返回
if (tmp == -1) {
System.out.printf("%4d%02d\n", year[p], month[p]);
break;
}
// 如果是顺序的,则记录新的编号
if (isSequence(year[p], month[p], year[tmp], month[tmp])) {
p = tmp;
continue;
}
// 输出尾巴
System.out.printf("%4d%02d\n", year[p], month[p]);
// 准备下一组
p = tmp;
tmp = -1;
}
}
}