=================代码如下================
import java.util.TreeSet;
/**
* 2010-12-29 16:21:00
* @author Administrator
*
*/
public class decompositionString {
//接受字符串转的数组
private String[] string;
private String[] str;
private Object[] obj;
//存放文件名和数量的二维数组
private Object[][] object;
//用于去除重复值并且排序的TreeSet
private TreeSet treeSet;
/**
* 转换成数组,遍历HashSet中的元素,存放到Object二维数组中
*/
public Object[][] zhuanCun(TreeSet ts,Object[][] objt){
obj=ts.toArray();
for (int i = 0; i < obj.length; i++) {
String s=(String) obj[i];
objt[i][0] = s.substring(0, s.lastIndexOf("#"));
objt[i][1] = s.substring(s.lastIndexOf("#")+1);
}
return objt;
}
/**
* 获取一个有规律的文件名称字符串,输出文件的名称(前缀名称相同的文件,只输出前缀名)和对应的数量
* @param strings
* @return
*/
public Object[][] getNameSum(String strings){
//名称为“xxx”的文件数量
int count;
//以"~"为符号,将字符串格式化存放到数组中
string=strings.split("~");
str=strings.split("~");
//初始化reeSet
treeSet=new TreeSet();
//重新定义数组string、str中文件的名称
for (int i = 0; i < string.length; i++) {
string[i] = string[i].substring(0, string[i].lastIndexOf("."));
str[i] = str[i].substring(0, str[i].lastIndexOf("."));
}
//获取文件名和文件名相同的文件个数,存放到二维数组中
for (int i = 0; i < string.length; i++) {
count=0;
//获取同名文件的个数
for (int j = 0; j < str.length; j++) {
if (string[i].equals(str[j])) {
count++;
}
}
//修改数组string中的字符串
string[i] += "#"+count;
//将数组string存放到treeSet中(treeSet可以自动剔除重复的值并且排序)
treeSet.add(string[i]);
}
//定义二维数组的长度
object=new Object[treeSet.size()][2];
//将treeSet中的元素存入Object二维数组object
object=this.zhuanCun(treeSet, object);
return object;
}
public static void main(String[] args) {
//测试字符串
String ss = "01.JPG~02.JPG~05美女.flv~05美女.avi~05美女.mp4~06.JPG~06-3.JPG~06-5.JPG~06-6.JPG~06-6.BPM";
Decomposition dec = new Decomposition();
Object[][] objt = dec.getNameSum(ss);
for (int i = 0; i < objt.length; i++) {
System.out.print("name:"+objt[i][0] + " ");
System.out.println("count:"+objt[i][1]);
}
}
}