C#:使用Hashtable实现输出那些用户发表主题最多的信息
构思:先计算各自的数量,那些数量最多,输出详细信息
具体算法如下:
public class Count
{
#region 计算各实体数量
public static Hashtable EntityCount(DataTable dt, string clmnUid)
{
//List<string> lst = new List<string>();
Hashtable uidsCount = new Hashtable(); foreach( DataRow row in dt.Rows)
{
string uid = row[clmnUid].ToString();
if (uidsCount.Contains(uid))
{
uidsCount[uid] = (int)uidsCount[uid] + ;
}
else
{
uidsCount.Add(uid,);
}
}
return uidsCount;
}
#endregion #region 获取数量最多的实体 public static IList<string> MaxCountUid(Hashtable uidsCount,bool listResult)
{
int maxCount = ;
IList<string> uids = new List<string>();
int value = ;
foreach (DictionaryEntry kv in uidsCount)
{
value = (int)kv.Value;
if (value > maxCount)
{
maxCount = value;
uids.Clear();
uids.Add(kv.Key.ToString());
}
else if(value == maxCount)
{
uids.Add(kv.Key.ToString());
}
}
return uids;
} public static Hashtable MaxCountUid(Hashtable uidsCount)
{
int maxCount = ;
Hashtable uids = new Hashtable();
int value = ;
foreach (DictionaryEntry kv in uidsCount)
{
value = (int)kv.Value;
if (value > maxCount)
{
maxCount = value;
uids.Clear();
uids.Add(kv.Key,kv.Value);
}
else if (value == maxCount)
{
uids.Add(kv.Key, kv.Value);
}
}
return uids;
} #endregion #region 输出用户的ID、姓名、数量 public static void PrintMaxCountName(IList<string> uids,DataTable users, string clmnUid, string clmnName)
{
foreach(DataRow dr in users.Rows)
{
string strUid = dr[clmnUid].ToString();
foreach(string uid in uids)
{
if (uid == strUid)
{
string strName = dr[clmnName].ToString();
Console.WriteLine(strUid + ":" + strName);
}
}
}
} public static void PrintMaxCountName(Hashtable uids, DataTable users, string clmnUid, string clmnName)
{
foreach (DataRow dr in users.Rows)
{
string strUid = dr[clmnUid].ToString();
foreach (DictionaryEntry kv in uids)
{
if (kv.Key.ToString() == strUid)
{
string strName = dr[clmnName].ToString();
Console.WriteLine(strUid + ":" + strName +"(" + kv.Value.ToString() + ")");
}
}
}
} #endregion
}
构造测试数据:
public class Data
{
private string[] usersColumns = { "uid", "name" };
private string[] subjectsColumns = { "title", "uid", "time" }; public DataTable initUsers()
{
DataTable users = new DataTable();
foreach (string columnName in usersColumns)
{
users.Columns.Add(columnName);
} for (int i = ; i < ;i++ )
{
users.Rows.Add("uid"+i,"name"+i);
} return users;
} public DataTable initSujects()
{
DataTable subjects = new DataTable();
foreach (string columnName in subjectsColumns)
{
subjects.Columns.Add(columnName);
} for (int i = ; i < ; i++)
{
subjects.Rows.Add("title" + i, "uid" + i % ,"time" + );
} return subjects;
}
}
测试代码:
class Program
{ static void Main(string[] args)
{
const string clmnUid = "uid";
const string clmnName = "name";
Data data = new Data();
DataTable users = data.initUsers();
DataTable subjects = data.initSujects(); Hashtable uidsCount = Count.EntityCount(subjects, clmnUid);
Hashtable maxCountUids = Count.MaxCountUid(uidsCount);
Count.PrintMaxCountName(maxCountUids,users,clmnUid,clmnName); Console.Read();
}
}
输出结果:
uid0:name0(13)
uid1:name1(13)
uid2:name2(13)
C#:使用Hashtable实现输出那些用户发表主题最多的信息的更多相关文章
- Linux id 命令 - 显示用户id和组id信息
要登入一台计算机,我们需要一个用户名.用户名是一个可以被计算机识别的身份.基于此,计算机会对使用这个用户名的登陆的人应用一系列的规则.在Linux系统下,我们可以使用 id 命令. 什么是 id 命令 ...
- Perl获取主机名、用户、组、网络信息
获取主机名.用户.组.网络信息相关函数 首先是获取主机名的方式,Perl提供了Sys::Hostname模块,可以查询当前的主机名: use Sys::Hostname; print hostname ...
- lastlog---显示系统中所有用户最近一次登录信息。
lastlog命令用于显示系统中所有用户最近一次登录信息. lastlog文件在每次有用户登录时被查询.可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log ...
- Node.js:实现知乎(www.zhihu.com)模拟登陆,获取用户关注主题
前一段时间,在瞎看看 Node.js,便研究通过 Node.js 实现知乎模拟登陆.相信,有很多网站有登陆权限设置,如若用户未登陆,将会跳转至首页提醒用户登陆,无法浏览部分页面. 如若是 b/s 架构 ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- C4C和CRM里获取当前登录用户分配的Organization Unit信息
C4C 如何查看某个用户分配的组织单元ID: 在Employee的Organization Data区域内看到分配的组织名称,如下图红色下划线所示: 现在的需求就是使用ABSL获取当前登录用户分配的O ...
- 简单的股票信息查询系统 1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环) 2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来 3 允许按股票价格、涨跌幅、换手率这几列来筛选信息, 比如输入“价格>50”则把价格大于50的股票都打印,输入“市盈率<50“,则把市盈率小于50的股票都打印,不用判断等于。
'''需求:1 程序启动后,给用户提供查询接口,允许用户重复查股票行情信息(用到循环)2 允许用户通过模糊查询股票名,比如输入“啤酒”, 就把所有股票名称中包含“啤酒”的信息打印出来3 允许按股票价格 ...
- 删除/添加/调用WordPress用户个人资料的联系信息
如果你要折腾主题或者将WordPress站点开放注册,你可能需要自定义WordPress用户个人资料信息.下面倡萌将简单说一下如何删除.添加和调用自定义用户信息字段. 添加或删除字段,可以在主题的 f ...
随机推荐
- [转载]WGS84坐标与Web墨卡托坐标互转
//经纬度转Wev墨卡托 dvec3 CMathEngine::lonLat2WebMercator(dvec3 lonLat) { dvec3 mercator; ; +lonLat.y)*PI/) ...
- C# 生成二维码,彩色二维码,带有Logo的二维码及普通条形码
每次写博客,第一句话都是这样的:程序员很苦逼,除了会写程序,还得会写博客!当然,希望将来的一天,某位老板看到此博客,给你的程序员职工加点薪资吧!因为程序员的世界除了苦逼就是沉默.我眼中的程序员大多都不 ...
- swift语言实战晋级-1 Swift开发环境的搭建
想要进行Swift的学习,必须要有个开发环境.简单的说就是装好了Xcode的Mac系统.那么接下来我们就简单了解一下这方面的内容. 1.1 下载Xcode Xcode是苹果公司出的编程工具,类似于微软 ...
- 前端新手分析 AJAX执行顺序,数据走向
我是一名前端的newer 在刚学习AJAX和eJS的时候,对于顺序上面有很大迷惑,现在稍微清楚了一点, 理解不对的地方,还请各位大牛帮助给我指导一下. 总的 服务器和客户端的顺序 一. 除了必要的 ...
- UI design principles
Master's conclusion: 1. fix a color pattern 2. fix the frames the UI will use 3. fix the subject tha ...
- [原创]java WEB学习笔记76:Hibernate学习之路---Hibernate介绍,hibernate 环境的搭建
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- linux第9天 UDP
今天学了一点UDP知识,还是IP协议.都不是重点,重点是socket服务器框架 不过还是把今天学的东西,先罗列出来,将来复习的时候方便 q UDP报文可能会丢失.重复 q UDP报文可能会乱序 q ...
- Android自定义ScrollView实现一键置顶功能
效果图如下: (ps:动态图有太大了,上传不了,就给大家口述一下要实现的功能吧) 要实现的功能:当ScrollView向上滑动超过一定距离后,就渐变的出现一个置顶的按钮,当滑动距离小于我们指定的距离时 ...
- 多屏复杂动画CSS技巧三则(转载)
本文转载自: 经验分享:多屏复杂动画CSS技巧三则
- RMAN备份演练进阶篇
前篇介绍了通过rman进行各种备份,进阶篇则主要是rman的一些功能扩展和增加功能,利用前篇你已经完全可以完成数据库的备份,而通过本篇你可以更好更方便的完成数据库的备份. 一.建立增量备份 如果数据库 ...