62,635
社区成员




import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class CsdnTestSort {
/**
*
* @param file 文件内容以楼主给的例子相同。
* @return
* @throws Exception
*/
public static List<String[]> loadFile(File file) throws Exception{
//存放有几组数据。
List<String[]> list = new ArrayList<String[]>();
BufferedReader bfr = new BufferedReader(new FileReader(file));
String str = null;
while(null!=(str=bfr.readLine())){
String[] array = str.split("\\.");
list.add(array); //读取一行作为一组数据。
// System.out.println(array.length);
}
return list;
}
//得到有多少层,多一层前面就多两个空格
public static void getSpace(int index){
for(int i =0;i<index;i++){
System.out.print(" ");
}
}
public static void sortAll(List<String[]> list){
//set用来存放每一组的,第一个元素。
Collections.sort(list,new DeComparator());
Set<String> set = new HashSet<String>();
for(int i = 0; i<list.size();i++){
String[] array = list.get(i);
int number=array.length;
int flag =0;//默认情况下是 头元素是没有重复的。
//如果重复了,让flag变为1方面循环打印的时候不打印第一个元素。
if(set.contains(array[0])){
flag=1;
}
for(int j=flag;j<number;j++){
getSpace(j);// 打印空格。
System.out.print("|---"+array[j]);
System.out.println();
}
set.add(array[0]); //把头元素加入到set,就可以判断下一次是否有重复的头元素。
}
}
public static void main(String[] args) throws Exception {
sortAll(loadFile(new File("text.txt")));
}
}
class DefineComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
return 0;
}
}
class DeComparator implements Comparator{
@Override
public int compare(Object o1, Object o2) {
String[] str1 = (String[])o1;
String[] str2 = (String[])o2;
return str1[0].compareTo(str2[0]);
}
}
这是最完整的
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class CsdnTestSort {
/**
*
* @param file 文件内容以楼主给的例子相同。
* @return
* @throws Exception
*/
public static List<String[]> loadFile(File file) throws Exception{
//存放有几组数据。
List<String[]> list = new ArrayList<String[]>();
BufferedReader bfr = new BufferedReader(new FileReader(file));
String str = null;
while(null!=(str=bfr.readLine())){
String[] array = str.split("\\.");
list.add(array); //读取一行作为一组数据。
// System.out.println(array.length);
}
return list;
}
//得到有多少层,多一层前面就多两个空格
public static void getSpace(int index){
for(int i =0;i<index;i++){
System.out.print(" ");
}
}
public static void sortAll(List<String[]> list){
//set用来存放每一组的,第一个元素。
Set<String> set = new HashSet<String>();
for(int i = 0; i<list.size();i++){
String[] array = list.get(i);
int number=array.length;
int flag =0;//默认情况下是 头元素是没有重复的。
//如果重复了,让flag变为1方面循环打印的时候不打印第一个元素。
if(set.contains(array[0])){
flag=1;
}
for(int j=flag;j<number;j++){
getSpace(j);// 打印空格。
System.out.print("|---"+array[j]);
System.out.println();
}
set.add(array[0]); //把头元素加入到set,就可以判断下一次是否有重复的头元素。
}
}
public static void main(String[] args) throws Exception {
sortAll(loadFile(new File("text.txt")));
}
}