100G짜리 큰 파일에서 100개의 가장 큰 수를 찾아내다

2727 단어 큰 문서
제목: 100G 크기의 파일에 저장된 것은 모두 숫자이며, 숫자마다 쉼표로 구분된다.지금 이 많은 숫자 중에서 100개의 가장 큰 숫자를 찾아내라.프로그램:
 
public class Pick100 {
    //TreeSet      
    private TreeSet<Double> treeSet = null;
    
    public Pick100(){
        treeSet = new TreeSet<Double>();
    }
    
    /**
     *          treeSet 
     * @param fileName
     */
    public void doPick(String fileName){
        File file = new File(fileName);
        InputStream is = null;
        //   1024   
        byte[] b = new byte[1024];
        
        try {
            is = new BufferedInputStream(new FileInputStream(file));
            //         
            while(is.read(b) > 0){
                //      
                String str = new String(b);
                //        
                String[] numArr = str.split(",");
                //               ,         
                String lastNum = "";
                
                //            
                for(int i=0;i<numArr.length;i++){
                    String numStr = numArr[i];
                    Double num = new Double(numStr);
                    if(i == 0){
                        if(lastNum != null){
                            numStr = lastNum+numStr;
                        }
                    }else if(i == numArr.length-1){
                        lastNum = numStr;
                    }else{
                        treeSet.add(num);
                    }
                    
                    if(treeSet.size()>100){
                        treeSet.remove(treeSet.first());
                    }
                }
            }
            
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
    }
    
    /**
     *   treeSet    
     *
     */
    public void print(){
        Iterator<Double> it = treeSet.iterator();
        while(it.hasNext()){
            Double db = it.next();
            System.out.println(db);
        }
    }
    
    public static void main(String[] args){
        Pick100 pick = new Pick100();
        pick.doPick("numbers.txt");
        pick.print();
    }
}

좋은 웹페이지 즐겨찾기