本帖最后由 edithe 于 2015-6-7 19:16 编辑
前几天看到个题,忘了在哪,说是要把几个在txt文件的的ip读取出来并按大小顺序打印出来
我开始是想去点按大小比较,发现不对,然后想按点切割再比较各个段,写了一半代码,就写不下去了,我总感觉有更方便的方法,
后来发现java是有关于操作ip的类的,真是傻了,一试果然是可以的
- package test;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.IOException;
- import java.net.InetAddress;
- import java.net.UnknownHostException;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.LinkedList;
- /**
- * 61.54.231.245
- 61.54.231.9
- 61.54.231.246
- 61.54.231.48
- 61.53.231.249
- * @author lizewen
- *
- */
- public class IPbijiao {
- public static void main(String[] args) throws IOException {
- //读取文件,并存入集合,考虑到collections有sort方法
- BufferedReader br = new BufferedReader(new FileReader("E:\\exam.txt"));
- LinkedList<String> list = new LinkedList<String>();
- String data = null;
- while ((data = br.readLine()) != null) {
- list.add(data);
- }
- br.close();
- //根据比较器排序,
- Collections.sort(list,new ipComparator());
- System.out.println(list);
- }
- }
- //写一个IP类型的比较器
- class ipComparator implements Comparator<String>{
- @SuppressWarnings("finally")
- @Override
- public int compare(String o1, String o2) {
- int i = 0;
- try {
- i = InetAddress.getByName(o1).hashCode()-InetAddress.getByName(o2).hashCode();
- } catch (UnknownHostException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- return i;
- }
- }
- }
复制代码 代码很简单,同学应该都是知道的,只是我花了不少时间才想到,拿出来分享下
|