public class SortUtil
{
/**
* insertionSort;
* @param data, array[];
* @param first, 0;
* @param last, array.length - 1;
*/
public static void insertionSort(Comparable[] data, int first, int last)
{
for(int i = first + 1; i <= last; i++)
{
Comparable temp = data[i];
int j = i - 1;
for(; j >= first && data[j].compareTo(temp) > 0; j--)
{
data[j + 1] = data[j];
}
data[j + 1] = temp;
}
}
/**
* getMaxCompare;
* @param data, array[];
* @return Max Value;
*/
public static Comparable getMaxCompare(Comparable[] data)
{
insertionSort(data, 0, data.length - 1);
return data[data.length - 1];
}
public static void main(String[] args)
{
Comparable[] data = {3,2};//,4,12,43,654,12,242,124,151,87,1,7,1,3,2,9,3,6,2,7,8};
insertionSort(data, 0 , data.length - 1);
for(int i = 0; i < data.length; i++)
{
System.out.print(data[i] +",");
}
System.out.println();
System.out.print(getMaxCompare(data));
}
}
public class FileEntity implements Comparable
{
/**
* 5.01.01.T05$12.11.20T28,12.11.20T28$12.11.20T45
*/
public static final String FileSeparatorTag = "T";
public String filename = "5.01.01.T05$12.11.20"+FileSeparatorTag+"28";
@Override
public int compareTo(Object obj)
{
String nextFileName = ((FileEntity) obj).filename;
return Integer.parseInt(this.filename.substring(this.filename.lastIndexOf(FileSeparatorTag) + 1)) - Integer.parseInt(nextFileName.substring(nextFileName.lastIndexOf(FileSeparatorTag) + 1));
}
public static void main(String[] args)
{
String tmp = "5.01.01.T05$12.11.20"+FileSeparatorTag+"28";;
String tmps = tmp.substring(tmp.lastIndexOf(FileSeparatorTag) + 1);
System.out.println("" + tmps);
}
}
public class FileClient
{
/**
* eg.dirs: 5.01.01.T05$12.11.20T28,12.11.20T28$12.11.20T45 getDirList
*
* @param filepath ,directory ;
* @return ,list directories;
*/
public static FileEntity[] getListDirs(String filepath)
{
List tmpList = new ArrayList();
File dir = new File(filepath);
File[] files = dir.listFiles();
for(int i = 0; i < files.length; i++)
{
String strFile = files[i].getAbsolutePath().substring(files[i].getAbsolutePath().lastIndexOf(File.separator) + 1);
System.out.println(strFile.indexOf("$") + "," + strFile);
if(files[i].isDirectory() && strFile.indexOf("$") > 0 && strFile.lastIndexOf("$") < strFile.length() - 1
&& strFile.lastIndexOf(FileEntity.FileSeparatorTag) < strFile.length() - 1)
{
FileEntity entity = new FileEntity();
entity.filename = files[i].getAbsolutePath();
tmpList.add(entity);
}
}
if(tmpList.size() > 0)
{
FileEntity[] dirs = new FileEntity[tmpList.size()];
for(int i = 0; i < tmpList.size(); i++)
{
dirs[i] = (FileEntity)tmpList.get(i);
}
return dirs;
}
else
{
FileEntity entity = new FileEntity();
entity.filename = filepath;
return new FileEntity[]{entity};
}
}
/**
* getMaxDirAbsolutePath
*
* @param filepath , input dir, directory;
* @return , maxDirAbsolutePath;
*/
public static String getMaxDirAbsolutePath(String filepath)
{
FileEntity[] dirs = getListDirs(filepath);
for(int i = 0; i < dirs.length; i++)
{
System.out.println("dirs:" + dirs[i].filename);
}
SortUtil.insertionSort(dirs, 0, dirs.length - 1);
for(int i = 0; i < dirs.length; i++)
{
System.out.println("insertionSort:" + dirs[i].filename);
}
FileEntity maxFileEntity = (FileEntity)SortUtil.getMaxCompare(dirs);
String theMaxDir = maxFileEntity.filename;
System.out.println("theMaxDir:" + theMaxDir);
return theMaxDir;
}
/**
* writeProperties
*
* @param propFileName , properties file path;
* @param key , key;
* @param value , value;
*/
public static void writeProperties(String propFileName, String key, String value)
{
File propFile = new File(propFileName);
try
{
propFile.createNewFile();
Properties prop = new Properties();
// InputStream fis = new FileInputStream(propFileName);
// // 从输入流中读取属性列表(键和元素对)
// prop.load(fis);
// 调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。
// 强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。
OutputStream fos = new FileOutputStream(propFileName);
prop.put(key, value);// .setProperty(key, value);
// 以适合使用 load 方法加载到 Properties表中的格式,
// 将此 Properties 表中的属性列表(键和元素对)写入输出流
prop.store(fos, "Update '" + key + "' -->" + value);
}
catch(Exception e)
{
e.printStackTrace();
}
}
/**
* test_readProperties
*
* @param propFileName
* @param key
* @param defaultValue
* @return
*/
public static String test_readProperties(String propFileName, String key, String defaultValue)
{
String value = defaultValue;
try
{
InputStream fis = new FileInputStream(propFileName);
Properties prop = new Properties();
prop.load(fis);
value = prop.getProperty(key, defaultValue);
}
catch(Exception e)
{
e.printStackTrace();
}
System.out.println("value:" + value);
return value;
}
/**
* eg.dirs: 5.01.01.T05$12.11.20T28,12.11.20T28$12.11.20T45
*
* @param args
*/
public static void main(String[] args)
{
String srcDirPath = "C:/scripts/";
String destPropPath = "./";
if(args.length == 2)
{
srcDirPath = args[0];
destPropPath = args[1];
}
destPropPath = destPropPath + "theMaxDir" + ".properties";
String theMaxDir = getMaxDirAbsolutePath(srcDirPath).replaceAll("\\\\", "\\/");
System.out.println("theMaxDir:" + theMaxDir);
System.out.println("user.dir=" + System.getProperty("user.dir"));
writeProperties(destPropPath, "theMaxDir", theMaxDir);
test_readProperties(destPropPath, "theMaxDir", srcDirPath);
}
}
分享到:
相关推荐
1. **文件I/O操作**:Java的`java.io`包提供了对文件读写的支持,程序需要读取每个文件的内容,然后进行字符串匹配。这涉及到File类的使用,以及InputStream和Reader类来读取文件内容。 2. **目录遍历**:通过File...
描述: 本课程设计的目的是通过随机函数产生 N 个随机整数(20000 以上),然后使用多种方法对这些数进行排序,比较各个方法的性能,并找出其中两种较快的方法。 标签: 多种 方法 排序 部分内容: 1. 问题描述:本...
一个查找java的.class和.java的辅助编程工具,可以批量从jar包或文件夹中查找,支持通配符。此工具需机器上安装有JRE。双击运行。 使用说明: 1、输入要查找的类名。支持通配符*(代表任意多个字符)和?(代表一个字符)...
通过遍历文件夹,找出音频文件,将其元数据(如艺术家、专辑、曲目等)提取出来,展示在播放列表中。用户可以方便地添加、删除、排序和播放这些歌曲。 安全性也是Java音乐播放器关注的重点。由于Java的沙箱模型,它...
其中,堆(Heap)是一种特殊的完全二叉树,其中的每一个节点值都不大于或不小于其子节点的值,它支持快速地在集合中找出最大元素(最大堆)或最小元素(最小堆),在优先队列、堆排序等算法中有广泛应用。...
例如,可能有解决数组问题的代码,如遍历数组,查找最大值或最小值,或者排序算法的实现。还可能涉及到面向对象编程的题目,如创建自定义类,实现继承,接口,或者多态等。 对于初学者来说,理解和分析这些习题答案...
No1:找出数组中能够组成sum的两个数的数组下标 解法:使用Map来存储,如果发现target-arr[i]如果在Map中有数据,那返回下标即可 No3:求出数组能组成最大不重复元素的间隔 解法:使用滑动窗口的思想,不停往前移动...
在整理项目依赖时,它可以帮你找出重复的类库,避免不必要的资源浪费。 需要注意的是,虽然"whereisclass"提高了搜索效率,但它的效率仍然受到硬盘I/O速度和.jar文件数量的影响。因此,在处理大量.jar文件时,可能...
9. **返回指定节点的索引位置**:找出指定节点在树中的具体位置。 #### 三、树的应用场景 树形结构在现实生活中有着广泛的应用,包括但不限于: 1. **文件系统**:Windows资源管理器中的文件夹和子文件夹结构就是...
2. **查询阶段**: 用户输入搜索关键词后,程序将这些关键词与索引数据库进行匹配,找出匹配的文件。 3. **结果显示**: 搜索结果按相关性排序展示,用户可以查看文件名、预览内容以及打开原始文件。 **使用方法** 1....
No1:找出数组中能够组成sum的两个数的数组下标 解法:使用Map来存储,如果发现target-arr[i]如果在Map中有数据,那返回下标即可 No3:求出数组能组成最大不重复元素的间隔 解法:使用滑动窗口的思想,不停往前移动...
4. 结果排序:将所有图片按相似度进行排序,找出最相似的图片。 标签中的“图片相似度”和“相似图片”进一步强调了这个工具的核心功能。在实际应用中,这项技术可以用于图片搜索、版权检测、内容识别、人脸识别等...
路径规划是指通过计算找出两点之间的最短、最快或最经济的路径。而多途径点路径规划设计则是路径规划中更为复杂的一个分支,它不仅需要计算起点与终点之间的路径,还需要考虑多个途经点的顺序和路径,以满足实际应用...
根据给定的信息,“Java设计模式之禅”是一本专注于Java设计模式的专业书籍,旨在帮助不同层次的开发人员理解和应用各种设计模式。以下是对该书提到的一些关键知识点的详细阐述: ### 一、策略模式(Strategy ...
10. **调试与测试**:学习如何使用IDE的调试工具找出并修复代码中的错误,以及进行单元测试和集成测试。 通过研究这个项目,开发者不仅可以学习到游戏开发的具体技术,还能提升项目管理和团队协作的能力。对于初学...
- 通过建立哈希表或使用排序等方法找出数组中的重复数字。 以上内容涵盖了Java基础、Java集合框架、Linux常用指令、MySQL基础和数组处理等多个方面,是面试中常见的技术问题,也是IT行业技术面试的必考知识点。
2. **放置库文件**:根据描述,有两个库文件夹"lib1"和"lib2",它们包含了运行水晶报表Java版所需的JAR文件。这些文件需要被添加到你的Java项目的类路径(ClassPath)中,通常是将它们放入项目的"lib"目录,然后在...
素数判断是基础数学问题,常见的算法有埃拉托斯特尼筛法,它通过从2开始逐个排除每个数的倍数,找出所有小于某个给定数的素数。 2. **数组排序**:数组排序是一个广泛研究的算法主题,包括快速排序、归并排序、冒泡...
例如,在编程中,我们经常需要处理多个数据集合的关系,如查找两个用户列表中都有的用户、合并多个数据集、找出存在于一个数据集中但不在另一个数据集中的元素等。这些操作都可以通过实现并集、交集和差集的算法来...