论坛首页 入门技术论坛

一笔试小题---文件读写操作(希望对刚毕业找工作的朋友有所帮助)

浏览 32647 次
该帖已经被评为新手帖
作者 正文
   发表时间:2009-01-06  
老实说,我当年毕业找工作的时候就遇到了这个题目,,其实现在想想当初想法很可笑的。。

把字符分成二个字符串数据。在第一个数据排序换位的,最终确定的时候,把带有字符的第二个字符串也同样的下标换位。最后,并排输出二个数组就OK了。。
0 请登录后投票
   发表时间: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判断.



后面两种方法能不能详细说明下
0 请登录后投票
   发表时间:2009-01-06  
对了,还有存在相同key的情况,map肯定是不能用了,是不是只能自己写Comparator?
0 请登录后投票
   发表时间: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判断.



谢谢,指正编码规范是该看看了
0 请登录后投票
   发表时间:2009-01-06  
呵呵 没想到小小一题  竟暴露出那么多弊端  长知识了
0 请登录后投票
   发表时间:2009-01-06  
kulinglei 写道
你用正则表达式把它搞成数组,排序,我看好简单啊,

你写的好复杂,有没有意义



正则表达式,还真不太了解  ,能把正则表达式贴出来吗
0 请登录后投票
   发表时间: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,如果参与排序,是放头还是放尾,或者扔异常
0 请登录后投票
   发表时间:2009-01-06  
期待大牛出来解决相同key值的问题
0 请登录后投票
   发表时间:2009-01-06  
sort +1n intel.txt>sun.txt
0 请登录后投票
   发表时间: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();
}
}
}


这个能解决重复问题。


正解
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics