JSON方法读取数据实例

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;
}
}

猜你喜欢

转载自blog.csdn.net/qq_40294980/article/details/82320371
今日推荐