
正文
按时间排序java源代码 java date排序
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
怎么从文本中匹配日期格式并按此排序(Java)
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestExp {
public static void main(String[] args) {
ListMapString,Object rs = new ArrayListMapString,Object();
//假定日期字符串的格式为yyyy-MM-dd
String[] s = {"adfkjaskdfakf2012-11-23asdfasdfads",
"asdfasddfafll2011-12-03asdfasfdaa",
"asdfasddfafll2013-02-05asdfasfdaa",
"asdfasddfafll2013-01-03asdfasfdaa"};
//用正则表达式匹配日期字符串
Pattern pattern = Pattern.compile("(\\d{4})(-)(\\d{2})(-)(\\d{2})");
for (int i = 0; i s.length; i++) {
MapString,Object map = new HashMapString, Object();
Date date = null;
Matcher m = pattern.matcher(s[i]);
if(m.find()){
try {
date = new SimpleDateFormat("yyyy-MM-dd").parse(m.group());
} catch (ParseException e) {
e.printStackTrace();
}
}
map.put("date", date);
map.put("value", s[i]);
rs.add(map);
}
//用冒泡法排序
for (int i = 0; i rs.size(); i++) {
for (int j = i; j rs.size(); j++) {
if(((Date)rs.get(i).get("date")).after((Date)rs.get(j).get("date"))){
MapString,Object tmp = rs.set(i, rs.get(j));
rs.set(j, tmp);
}
}
}
for (int i = 0; i rs.size(); i++) {
System.out.println(rs.get(i).get("value"));
}
}
}
相关问答
Q1: java实现日期排序问题
java按文件日期排序方法,下面以对C盘Java目录下文件进行按日期排序为例:
//引用java.io包里的所有类
import java.io.*;
import java.util.*;
public class FileOrder{
//按日期排序
public static void orderByDate(String fliePath) {
File file = new File(fliePath);
File[] fs = file.listFiles();
Arrays.sort(fs,new Comparator File(){
public int compare(File f1, File f2) {
long diff = f1.lastModified() - f2.lastModified();
if (diff 0)
return 1;
else if (diff == 0)
return 0;
else
return -1;
}
public boolean equals(Object obj) {
return true;
}
});
for (int i = fs.length-1; i -1; i--) {
System.out.println(fs[i].getName());
System.out.println(new Date(fs[i].lastModified()));
}
}
public static void main(String args[]){
orderByDate("c:/java"); //调用方法对c:/java目录下文件按日期排序
}
}
Q2: Java几种简单的排序源代码
给你介绍4种排序方法及源码,供参考
1.冒泡排序
主要思路: 从前往后依次交换两个相邻的元素,大的交换到后面,这样每次大的数据就到后面,每一次遍历,最大的数据到达最后面,时间复杂度是O(n^2)。
public static void bubbleSort(int[] arr){
for(int i =0; i arr.length - 1; i++){
for(int j=0; j arr.length-1; j++){
if(arr[j] arr[j+1]){
arr[j] = arr[j]^arr[j+1];
arr[j+1] = arr[j]^arr[j+1];
arr[j] = arr[j]^arr[j+1];
}
}
}
}
2.选择排序
主要思路:每次遍历序列,从中选取最小的元素放到最前面,n次选择后,前面就都是最小元素的排列了,时间复杂度是O(n^2)。
public static void selectSort(int[] arr){
for(int i = 0; i arr.length -1; i++){
for(int j = i+1; j arr.length; j++){
if(arr[j] arr[i]){
arr[j] = arr[j]^arr[i];
arr[i] = arr[j]^arr[i];
arr[j] = arr[j]^arr[i];
}
}
}
}
3.插入排序
主要思路:使用了两层嵌套循环,逐个处理待排序的记录。每个记录与前面已经排好序的记录序列进行比较,并将其插入到合适的位置,时间复杂度是O(n^2)。
public static void insertionSort(int[] arr){
int j;
for(int p = 1; p arr.length; p++){
int temp = arr[p]; //保存要插入的数据
//将无序中的数和前面有序的数据相比,将比它大的数,向后移动
for(j=p; j0 temp arr[j-1]; j--){
arr[j] = arr[j-1];
}
//正确的位置设置成保存的数据
arr[j] = temp;
}
}
4.希尔排序
主要思路:用步长分组,每个分组进行插入排序,再慢慢减小步长,当步长为1的时候完成一次插入排序, 希尔排序的时间复杂度是:O(nlogn)~O(n2),平均时间复杂度大致是O(n^1.5)
public static void shellSort(int[] arr){
int j ;
for(int gap = arr.length/2; gap 0 ; gap/=2){
for(int i = gap; i arr.length; i++){
int temp = arr[i];
for(j = i; j=gap temparr[j-gap]; j-=gap){
arr[j] = arr[j-gap];
}
arr[j] = temp;
}
}
}
Q3: 求助大神~~~java按时间顺序,读取文件夹下的所有文件(时间最早的先读取,就是最老的那个)
/**
* @param args
*/
public static void main(String[] args) {
String path = "d:\\test";
ListFile list = getFileSort(path);
for (File file : list) {
System.out.println(file.getName() + " : " + file.lastModified());
}
}
/**
* 获取目录下所有文件(按时间排序)
*
* @param path
* @return
*/
public static ListFile getFileSort(String path) {
ListFile list = getFiles(path, new ArrayListFile());
if (list != null list.size() 0) {
Collections.sort(list, new ComparatorFile() {
public int compare(File file, File newFile) {
if (file.lastModified() newFile.lastModified()) {
return 1;
} else if (file.lastModified() == newFile.lastModified()) {
return 0;
} else {
return -1;
}
}
});
}
return list;
}
/**
*
* 获取目录下所有文件
*
* @param realpath
* @param files
* @return
*/
public static ListFile getFiles(String realpath, ListFile files) {
File realFile = new File(realpath);
if (realFile.isDirectory()) {
File[] subfiles = realFile.listFiles();
for (File file : subfiles) {
if (file.isDirectory()) {
getFiles(file.getAbsolutePath(), files);
} else {
files.add(file);
}
}
}
return files;
}
Q4: JAVA 日期排序
前提,假设你使用一个数组来保存一组开始时间+结束时间,当然,你也可以用其它的数据结构。
基本思路,1转换为Date型,2使用Calendar类来比较两个日期,3 自己实现compare方法:
各部分的例子:
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
Date startDate1 = simpleDateFormat.parse("2018年3月18日");
Date startDate2 = simpleDateFormat.parse("2018年3月12日");
private void sort(ListDate dataList){
Collections.sort(dataList, new ComparatorDate() {
@Override
public int compare(Date o1, Date o2) {
if(d1 != null d2 != null){
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.setTime(o1);
c2.setTime(o2);
return c1.After(c2);
}else{
return -1;
}
}
});
}
大概写了下,具体你自己调调,还要注意异常处理。
关于按时间排序java源代码和java date排序的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






