该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-06
一行shell脚本搞定
|
|
返回顶楼 | |
发表时间:2009-01-06
不可以这样吗?
TreeMap<Integer,List> map=new TreeMap<Integer,List>(); integer保存数字,List保存名字+数字? |
|
返回顶楼 | |
发表时间:2009-01-06
andyao 写道 一行shell脚本搞定
呵呵 shell脚本贴出来学习下 |
|
返回顶楼 | |
发表时间:2009-01-06
only_java 写道 不可以这样吗?
TreeMap<Integer,List> map=new TreeMap<Integer,List>(); integer保存数字,List保存名字+数字? 恩 应该可以 ,还有不用TreeMap排序的方法吗?用TreeMap还要自己定义个比较器 |
|
返回顶楼 | |
发表时间:2009-01-06
最后修改:2009-01-06
jiagyao 写道 only_java 写道 不可以这样吗?
TreeMap map=new TreeMap(); integer保存数字,List保存名字+数字? 恩 应该可以 ,还有不用TreeMap排序的方法吗?用TreeMap还要自己定义个比较器 import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.PrintWriter; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.TreeSet; public class SortFile{ private Map<Integer,String> map; private Set<Integer> set; public SortFile(){ map=new HashMap<Integer,String>(); set=new TreeSet<Integer>(); } public static void main(String[] args){ String filename = "D:/test1.txt"; String toFilename = "D:/test2.txt"; new SortFile().sortFile(filename, toFilename); } public void sortFile(String filename,String toFilename){ File file = new File(filename); BufferedReader reader=null; File toFile = new File(toFilename); PrintWriter writer = null; try { reader = new BufferedReader(new FileReader(file)); String tempString = null; String[] ss = null; while((tempString = reader.readLine()) != null){ ss = tempString.split(" "); String value = ss[0]; Integer key=Integer.parseInt(ss[1]); map.put(key,value); set.add(key); } writer = new PrintWriter(new FileOutputStream(toFile)); for(Integer key : set){ String value=map.get(key); writer.println(value+" "+key); } writer.flush(); } catch (Exception ex) { } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } writer.close(); } } } |
|
返回顶楼 | |
发表时间:2009-01-06
你好LZ,
首先, 老实说我不会JAVA。 所以我说的有可能是错的。 很不幸我认为你写的是错的。 这里不应该用map map表达的是key 和 value的映射 注意key是唯一的是一种集合的概念。 (如果java中的map是一种dup map那算我没说.) 具体到你的问题文件中的内容应该保存在list里 之后的做法一般有2种 1. list中的元素是每行中的内容。 自定义比较方法每次比较时都去从这个string中解析那个int. 这种方法比较省事只要自己定义一个比较方法就可以了 2. 上一个方法有个比较明显的缺点是 每次比较都要解析一次字符串 效率较差。所以在list中可以保存每行内容和数值的一个pair. (java中好像没有内置的pair类型, 可以自己写一个, 不过几行代码的事。 或者直接使用元素为Object类型的list) 建议: 踏实一点不要 听LS几位的认为这是个API问题就不重视. 实际这事概念问题 :p 刚毕业打好基础很重要. 祝你好运 |
|
返回顶楼 | |
发表时间:2009-01-06
cat intel.txt | sort -k2n > sun.txt
|
|
返回顶楼 | |
发表时间:2009-01-06
icefishc 写道 你好LZ,
首先, 老实说我不会JAVA。 所以我说的有可能是错的。 很不幸我认为你写的是错的。 这里不应该用map map表达的是key 和 value的映射 注意key是唯一的是一种集合的概念。 (如果java中的map是一种dup map那算我没说.) 具体到你的问题文件中的内容应该保存在list里 之后的做法一般有2种 1. list中的元素是每行中的内容。 自定义比较方法每次比较时都去从这个string中解析那个int. 这种方法比较省事只要自己定义一个比较方法就可以了 2. 上一个方法有个比较明显的缺点是 每次比较都要解析一次字符串 效率较差。所以在list中可以保存每行内容和数值的一个pair. (java中好像没有内置的pair类型, 可以自己写一个, 不过几行代码的事。 或者直接使用元素为Object类型的list) 建议: 踏实一点不要 听LS几位的认为这是个API问题就不重视. 实际这事概念问题 :p 刚毕业打好基础很重要. 祝你好运 首先谢谢您能花那么几分钟来点评教导,我会认真打好基础的。帖子发出去也想到了TreeMap的key不能重复的问题,一旦重复就只显示相同key的其中的一条 |
|
返回顶楼 | |
发表时间:2009-01-06
public void sortFile(String sourceFile, String destFile) { BufferedReader bReader = null; PrintWriter pWriter = null; try { bReader = new BufferedReader(new InputStreamReader( new FileInputStream(sourceFile))); String keyString = bReader.readLine(); Map<Integer, String> map = new HashMap<Integer, String>(); while (keyString != null) { String[] ar = keyString.split(" "); map.put(Integer.valueOf(ar[1]), ar[0]); keyString = bReader.readLine(); } System.out.println("读取文件成功..."); Object[] objects = map.keySet().toArray(); Arrays.sort(objects); pWriter = new PrintWriter(new FileOutputStream(destFile)); int len = objects.length; for (int i = len - 1; i >= 0; i--) pWriter.println(new StringBuilder(map.get(objects[i])).append( " ").append(objects[i]).toString()); pWriter.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (bReader != null) { try { bReader.close(); } catch (IOException e) { e.printStackTrace(); } } if (pWriter != null) { pWriter.close(); } } System.out.println("保存文件成功...."); }
|
|
返回顶楼 | |
发表时间:2009-01-06
自己把文本里面一行的东西定义个对象。实现Comparable接口
class Student implements Comparable { int age; String name; public Student(int age, String name) { this.age = age; this.name = name; } public int compareTo(Object o) { Student s = (Student)o; return age > s.age ? 1:(age == s.age ? 0 : -1); } } 随便你用什么排序都行了。还可以扩展到多个属性。 |
|
返回顶楼 | |