看到论坛里那set集合排序的,结果试了根本不行,
package com.itheima;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.TreeMap;
public class Test6 {
/**
* 6、把以下IP存入一个txt文件,编写程序把这些IP按数值大小,从小到达排序并打印出来。
* 61.54.231.245
* 61.54.231.9
* 61.54.231.246
* 61.54.231.48
* 61.53.231.249
*
* @param args
*/
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("ip.txt")); //把IP存入ip.txt文件
bw.write("61.54.231.245");
bw.newLine();
bw.write("61.54.231.9");
bw.newLine();
bw.write("61.54.231.48");
bw.newLine();
bw.write("61.53.231.249");
bw.newLine();
bw.write("61.54.231.249");
bw.flush();
bw.close();
BufferedReader br = new BufferedReader(new FileReader("IP.txt")); //创建字符输入流对象,关联ip.txt
String str = null; //定义一字符串存储每行ip地址
TreeMap<Integer, String> tm = new TreeMap<>(); //定义双列集合存储每行ip地址,及ip地址数值大小
while ((str = br.readLine()) != null) { //读取文件中的每一行,直到结束
String[] strip = str.split("\\."); //用正则表达式分割ip字符串,存入一个字符串数组
Integer ip = Integer.parseInt(strip[0]) * 256 * 256 * 256
+ Integer.parseInt(strip[1]) * 256 * 256
+ Integer.parseInt(strip[2]) * 256
+ Integer.parseInt(strip[3]); //把ip地址当成256进制数计算其大小,把每一位转换为数字对象
tm.put(ip, str); //把ip数值当作键,ip字符串当作值,添加到TreeMap中自然排序
}
br.close(); //关闭字符输入流
for (Integer key : tm.keySet()) { // 取出所有键的集合
System.out.println(tm.get(key)); // get()根据键获取值,打印
}
}
}
|
|