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