该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-01-06
老实说,我当年毕业找工作的时候就遇到了这个题目,,其实现在想想当初想法很可笑的。。
把字符分成二个字符串数据。在第一个数据排序换位的,最终确定的时候,把带有字符的第二个字符串也同样的下标换位。最后,并排输出二个数组就OK了。。 |
|
返回顶楼 | |
发表时间:2009-01-06
trydofor 写道 个人建议;
1. 命名不规范,不可取 read_writeFile 2. map是unique key,如果有数值相同的或同名的咋整 3. 简单实现,就是楼上提到的shell, sort -k2n <t.txt > r.txt 4. 排序,用API,自己写Comparator 5. 前置条件检查,public int compare(Object o1, Object o2),最好做null判断. 后面两种方法能不能详细说明下 |
|
返回顶楼 | |
发表时间:2009-01-06
对了,还有存在相同key的情况,map肯定是不能用了,是不是只能自己写Comparator?
|
|
返回顶楼 | |
发表时间:2009-01-06
trydofor 写道 个人建议;
1. 命名不规范,不可取 read_writeFile 2. map是unique key,如果有数值相同的或同名的咋整 3. 简单实现,就是楼上提到的shell, sort -k2n <t.txt > r.txt 4. 排序,用API,自己写Comparator 5. 前置条件检查,public int compare(Object o1, Object o2),最好做null判断. 谢谢,指正编码规范是该看看了 |
|
返回顶楼 | |
发表时间:2009-01-06
呵呵 没想到小小一题 竟暴露出那么多弊端 长知识了
|
|
返回顶楼 | |
发表时间:2009-01-06
kulinglei 写道 你用正则表达式把它搞成数组,排序,我看好简单啊,
你写的好复杂,有没有意义 正则表达式,还真不太了解 ,能把正则表达式贴出来吗 |
|
返回顶楼 | |
发表时间:2009-01-06
E生迅徒 写道 trydofor 写道 个人建议;
1. 命名不规范,不可取 read_writeFile 2. map是unique key,如果有数值相同的或同名的咋整 3. 简单实现,就是楼上提到的shell, sort -k2n <t.txt > r.txt 4. 排序,用API,自己写Comparator 5. 前置条件检查,public int compare(Object o1, Object o2),最好做null判断. 后面两种方法能不能详细说明下 4. java.util.Arrays.* java.util.Collections.sort(list); 5. if(o1 == null) return xxx; if(o2 == null) // xxx; 就是如果参数是null,如果参与排序,是放头还是放尾,或者扔异常 |
|
返回顶楼 | |
发表时间:2009-01-06
期待大牛出来解决相同key值的问题
|
|
返回顶楼 | |
发表时间:2009-01-06
sort +1n intel.txt>sun.txt
|
|
返回顶楼 | |
发表时间:2009-01-07
agiha 写道 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.ArrayList; import java.util.LinkedList; import java.util.Arrays; public class SortFile{ // private Map<Integer,String> map; // private Set<Integer> set; private LinkedList<Integer> keyList=new LinkedList<Integer>(); private LinkedList<String> valueList=new LinkedList<String>(); 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]); keyList.add(key); valueList.add(value); } int size=keyList.size(); Integer[] sortlist=keyList.toArray(new Integer[size]); Arrays.sort(sortlist); writer = new PrintWriter(new FileOutputStream(toFile)); for(Integer key : sortlist){ int index=keyList.indexOf(key); String value=valueList.remove(index); keyList.remove(index); writer.println(value+" "+key); } writer.flush(); } catch (Exception ex) { } finally { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } writer.close(); } } } 这个能解决重复问题。 正解 |
|
返回顶楼 | |