Google interview 問題:給定視頻名稱和觀看率的列表L,請編寫一個函數,以返回觀看率排名前10位的視頻。視頻名稱可能會出現多次。

問題:給定視頻名稱和觀看率的列表L,請編寫一個函數,以返回觀看率排名前10位的視頻。視頻名稱可能會出現多次。


L = [(‘abc’,10),(‘def’,15),(‘ghi’,10),(‘abc’,12),…,(‘xyz’,100)]

該函數應返回[‘xyz’,‘abc’,…,‘def’,‘ghi’]

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
		//Given a list L of video names and their watch rates;
		//write a fuction that will return the videos with the top 10 watch rates.
		//Video names may appear more than once;
		
		private static List<Video> L;
		public static void main(String[] args){
			L = Arrays.asList(new Video("A",2),new Video ("C",5),new Video("B",5),new Video("A",4));
			Map<String,Integer> grouped = L.stream()
			.collect(Collectors.groupingBy(Video::getName,Collectors.summingInt(Video::getRate)));
			grouped.entrySet().stream()
			.sorted(Map.Entry.comparingByValue(Comparator.reverseO	rder()))
			.limit(10)
			.forEach(e -> System.out.println(e.getKey()));
		}
		private static class Video{
			private String name;
			private int rate;
			Video(String name,int rate){
				this.name = name;
				this.rate = rate;
				}
			public String toString(){
				return "{" + name + "," + rate + "}";
			}
			public String getName(){
				return this.name;
			}
			public int getRate(){
				return this.rate;
			}
		}
	}
			
			
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章