JSONメソッドデータ読み込み例

12923 ワード

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import com.alibaba.fastjson.JSON;

に質問
/**
 *               N     
                    
 */
public class LoadData {
        public static void main(String[] args) { /           }

//第二問:ユーザーごとの採点平均値
        public static void question2() {
        Map<String, List<Movie>> uidMap = getUidMap();
        Set<Entry<String, List<Movie>>> entrySet = uidMap.entrySet();
        for (Entry<String, List<Movie>> entry : entrySet) {
            String uid = entry.getKey();
            List<Movie> list = entry.getValue();
            double sum=0;
            for (Movie movie : list) {
                //         integer  
                sum+=Double.parseDouble(movie.getRate());
            }
            double avg=sum/list.size();
            System.out.println(uid+"----"+avg);

            }
        }

//第一問、各ユーザーの採点が最も高い3つの記録を求めます.

public static void question1() {
    Map<String, List<Movie>> uidMap = getUidMap();
    Set<Entry<String, List<Movie>>> entrySet = uidMap.entrySet();
    for (Entry<String, List<Movie>> entry : entrySet) {
        String uid = entry.getKey();
        List<Movie> list = entry.getValue();

        if(list!=null&&list.size()>=3) {
        // list      
        Collections.sort(list, new Comparator<Movie>() {
            @Override
            public int compare(Movie o1, Movie o2) {
                return o2.getRate().compareTo(o1.getRate());
            }
        });
        for (int i = 0; i <3; i++) {
            Movie m = list.get(i);
            System.out.println(uid+"-----"+m);
            }   
        }
    }
}

/*ユーザidをkeyとするmap/を取得する
public static Map<String,List<Movie>> getUidMap() {
        Map<String,List<Movie>>map=new HashMap<>();
        try(BufferedReader br = new BufferedReader(new FileReader("E:\\java  \\day06\\rating.txt"));) {
        String line=null;
        while((line=br.readLine())!=null) {
            Movie m;
            try {
                //                ,     
                m = JSON.parseObject(line, Movie.class);
            } catch (Exception e) {
                continue;
            }
            //      list ,  getOrDefault,   list.add()
            List<Movie> list = map.getOrDefault(m.getUid(), new ArrayList<>());
            list.add(m);
            map.put(m.getUid(), list);
        }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
    }

/*映画のidをkeyとするmapを取得/
public static Map<String,List<Movie>> getMovieMap() {
        Map<String,List<Movie>>map=new HashMap<>();
        try(BufferedReader br = new BufferedReader(new FileReader("E:\\java  \\day06\\rating.txt"));) {
        String line=null;
        while((line=br.readLine())!=null) {
            Movie m;
            try {
                //                ,     
                m = JSON.parseObject(line, Movie.class);
            } catch (Exception e) {
                continue;
            }
            //      list ,  getOrDefault,   list.add()
            List<Movie> list = map.getOrDefault(m.getMovie(), new ArrayList<>());
            list.add(m);
            map.put(m.getMovie(), list);
        }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return map;
}
}