在这里,我们需要查出所有的“出发城市”和“到达城市”,并对每个城市进行计数根据其出现次数来取出几个出现次数最多的城市为热门城市
注:将多个字段的数据合并在一起并且不经过去重处理,可以使用下面这个SQL语句:select DEPARTURE_AIRPORT from USR_AIR_LINE union all select ARRIVAL_AIRPORT from USR_AIR_LINE;
(2)对取出的数据进行计数,排序以及求出最后的“热门城市”:package cn.zifangsky.base;
import java.io.BufferedReader;
import java.io.File;
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;
public class PopAirportDemo {
public static void main(String[] args) throws Exception {
// 读文件
BufferedReader reader = new BufferedReader(
new FileReader(new File("C:/Users/Administrator/Desktop/airport.txt")));
String temp = "";
List airportCodes = new ArrayList(); // 城市三字码集合
while ((temp = reader.readLine()) != null) {
airportCodes.add(temp);
}
reader.close();
Map countMap = new HashMap(); //
//遍历List形成键值对
for (String code : airportCodes) {
if (!countMap.containsKey(code)) {
countMap.put(code, 1);
} else {
countMap.put(code, countMap.get(code) + 1);
}
}
// 排序
List> list = new ArrayList>(countMap.entrySet());
Collections.sort(list, new Comparator>() {
//自定义排序
public int compare(Entry o1, Entry o2) {
return o2.getValue().compareTo(o1.getValue());
}
});
List result = new ArrayList(); //热门城市集合
int point = 0;
for (Map.Entry mapping : list) {
// System.out.println(mapping.getKey() + " -> " +
// mapping.getValue());
result.add(mapping.getKey());
point++;
//这里取5个热门城市
if (point >= 5)
break;
}
System.out.println(result);
}
}
注:我这里为了简化操作,已经把所有的城市三字码保存到“airport.txt”这个文件中了,这里只专注于整个算法流程而不考虑JDBC等问题
本文出自 “zifangsky的个人博客” 博客,请务必保留此出处http://983836259.blog.51cto.com/7311475/1772447
基础算法7:从数据库某个字段中取出现次数最多的几条数据形成“热门xxx”
标签:热门 算法
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:http://983836259.blog.51cto.com/7311475/1772447
TAG标签:热门 算法