您好,请看看你要的要求是这样吗?这是我写的代码,你试试.
package com.heima.jdxiti;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.TreeSet;
public class Test13 {
/**
* 需求:一个文件中的内容是数字,把它写到数组里,去重,按从大到小的顺序排列,输出到控制台上
* @param args
* 分析:
* 1,创建一个ArrayList集合
* 2,创建输入流,读取数据,把数据存储到集合中
* 3,创建TreeSet,传入比较器,将list集合的元素全部添加到Map集合中
* 4,将ArrayList集合清空,再将排序好,去重的TreeSet集合中的元素全部再添加到ArrayList集合中
* 5,创建一个数组长度和ArrayList相同的数组
* 6,遍历ArrayList集合将每一个元素添加到数组里
* 7,遍历打印数组
* @throws IOException
*
*/
public static void main(String[] args) throws IOException {
//1,创建一个arraylist集合
ArrayList<Integer> list = new ArrayList<>();
//2,创建输入流,读取数据,把数据存储到集合中
BufferedReader br = new BufferedReader(new FileReader("str.txt"));
String line;
while((line = br.readLine()) != null) {
int a = Integer.parseInt(line);
list.add(a);
}
br.close();
//3,创建TreeSet,传入比较器,将list集合的元素全部添加到Map集合中
TreeSet<Integer> ts = new TreeSet<>(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
int num = o2.compareTo(o1);
return num == 0 ? 0 : num;
}
});
ts.addAll(list);
//4,将list集合清空,再将排序好,去重的TreeSet集合中的元素全部再添加到list集合中
list.clear();
list.addAll(ts);
//5,创建一个数组长度和list相同的数组
int[] arr = new int[list.size()];
//6,遍历list集合将每一个元素添加到数组里
for (int i = 0; i < list.size(); i++) {
arr[i]=list.get(i);
}
//7,遍历打印数组
for (int i : arr) {
System.out.print(i + " ");
}
}
}
|