簡體   English   中英

使用Java寫入文件時無效的輸出

[英]Invalid outout when writing to file with java

我正在嘗試將輸出寫入csv文件,但第一個值是這種格式 在此處輸入圖片說明

我使用了ObjectOutputStream。 通常第一個值應該是1,1,1,2,2,2,3 ....這是我的代碼,有什么想法嗎?

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.util.List;

import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.LongPrimitiveIterator;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.LogLikelihoodSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.similarity.ItemSimilarity;

public class ItemRecommend {

    public static void main(String[] args) throws IOException {
        FileOutputStream fos = new FileOutputStream("data/test.csv");
        ObjectOutputStream oos = new ObjectOutputStream(fos);   
        try {
            DataModel dm = new FileDataModel(new File("data/rated.csv"));
            ItemSimilarity sim = new LogLikelihoodSimilarity(dm);
            GenericItemBasedRecommender recommender = new GenericItemBasedRecommender(dm, sim);

                for (LongPrimitiveIterator items = dm.getItemIDs(); items.hasNext();){
                    long itemID = (int)(long) items.nextLong();
                    List<RecommendedItem>recommendations = recommender.mostSimilarItems(itemID, 3);
                for(RecommendedItem recommendation : recommendations){
                    oos.writeObject(itemID + "," + recommendation.getItemID() + "," + recommendation.getValue()+"\n");
                    //System.out.println(itemID + "," + recommendation.getItemID() + "," + recommendation.getValue());                  
                }               
            }   
        } catch (IOException e) {
            System.out.println("Error !");
            e.printStackTrace();
        } catch (TasteException e) {
            System.out.println("Taste exception !");
            e.printStackTrace();
        }
        finally {
            oos.flush();
            oos.close(); 
            }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM