免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2043 | 回复: 3
打印 上一主题 下一主题

[求]统计文件中出现的字符并排序,最短代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-14 17:59 |只看该作者 |倒序浏览
用最少的代码,可以用J2SE的库
不管速度和效率

我实在想不出太好的,
希望大家多提些想法

谢谢了

论坛徽章:
0
2 [报告]
发表于 2007-05-15 11:08 |只看该作者
最短不敢说,给你点思路,参考 http://www.chinaunix.net/jh/26/398507.html

[ 本帖最后由 perryhg 于 2007-5-15 11:10 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2007-05-17 00:13 |只看该作者
谢谢回复
我的情况和那个还不太一样,
没有那个复杂
只要统计出现的字符,而且不需要对相同字符计数
功能有点像sort -u

贴了一段代码
下面 //1到//2的代码在java的API里有没有对应的函数,
或者用更短的代码实现


  1. import java.io.CharArrayWriter;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.util.Arrays;

  5. public class StatOccurence
  6. {
  7.     static byte[] readFile(String name) throws Exception
  8.     {
  9.         File f = new File(name);
  10.         byte buffer[] = new byte[(int)f.length()];
  11.         FileInputStream s = new FileInputStream(f);
  12.         s.read(buffer);
  13.         return buffer;
  14.     }
  15.     public static void main(String[] args) throws Exception
  16.     {

  17.         // process with args

  18.         char ciu[] = new String(readFile(args[1]), "utf-8").toCharArray();

  19.         Arrays.sort(ciu);

  20.         //1
  21.         CharArrayWriter sortedStatSet = new CharArrayWriter();

  22.         int i = 0;
  23.         int total = 0;
  24.         char c, lastc = '\ufeff';

  25.         while(i < ciu.length)
  26.         {
  27.             c = ciu[i++];
  28.             if (c == lastc || c < 0x100)
  29.             {
  30.                 continue;
  31.             }

  32.             sortedStatSet.write(c);
  33.             lastc = c;
  34.             total++;
  35.         }
  36.         //2

  37.         // do something with sortedStatSet.toCharArray()
  38.    }
  39. }
复制代码

论坛徽章:
0
4 [报告]
发表于 2007-05-17 00:16 |只看该作者
再问个问题,
是不是可以把基本数据类型的的数组直接转成对应的包装类数组,或者Collection
如 char[]直接转成Character[]或者Collection也行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP