A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

看到论坛里那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()根据键获取值,打印
                }

        }
}

点评

不错,受教了!  发表于 2016-6-12 10:39

3 个回复

倒序浏览
package com.heima.IO;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Comparator;
import java.util.TreeSet;

/**
* 61.54.231.245 61.54.231.9 61.54.231.246 61.54.231.48 61.53.231.249
*/

public class Day1_ClassTest2 {
        public static void main(String[] args) throws IOException {
                FileOutputStream fos = new FileOutputStream("黎玉梅.txt");
                String s = "61.54.231.245";
                String s1 = "61.54.231.9";
                String s2 = "61.54.231.246";
                String s3 = "61.54.231.48";
                String s4 = "61.53.231.249";

                TreeSet<String> t = new TreeSet<>(new Comparator<String>() {
                        public int compare(String st, String st1) {
                                String[] str = st.split("\\.");
                                String[] str1 = st1.split("\\.");
                                int c = 0;
                                for (int i = 0; i < str.length; i++) {
                                        c = Integer.parseInt(str[i]) - Integer.parseInt(str1[i]);
                                        if (c == 0 && i != str1.length - 1) {
                                                continue;
                                        } else {
                                                break;
                                        }

                                }
                                return c;

                        }
                });

                t.add(s);
                t.add(s1);
                t.add(s2);
                t.add(s3);
                t.add(s4);

                for (String string : t) {
                        fos.write(string.getBytes());
                        fos.write("\r\n".getBytes());
                }

        }

}
回复 使用道具 举报
好,学习啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马