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 ...
随机推荐
- Silverlight打印注意事项
1.Silverlight的打印功能从版本5开始才支持矢量打印,这不但要求打印机支持矢量打印,而且还要安装相应的打印驱动程序. 测试你的打印机是否支持矢量打印,可以参考:如何用C#代码检测打印机和驱动 ...
- urllib下载文件
import urllib 1.用urlib.urlretrieve f = urllib.urlretrieve('http://www.baidu.com/img/bdlogo.gif','/tm ...
- C++Primer 第五章
//1.表达式语句的作用:执行表达式并丢弃求值结果 ; value + ; //执行,并丢弃结果 //2.复合语句是指用花括号括起来的语句和声明的序列,复合语句称为块.一个块就是一个作用域.块不以分号 ...
- Swift游戏实战-跑酷熊猫 00 游戏预览
这个系列我们将要一起来做一个这样的游戏
- contesthunter CH Round #64 - MFOI杯水题欢乐赛day1 solve
http://www.contesthunter.org/contest/CH Round %2364 - MFOI杯水题欢乐赛 day1/Solve Solve CH Round #64 - MFO ...
- ofbiz进击 。 ofbiz 退货流程(包含获取可退货项流程分析 以及 取消退货项的过程分析)
根据订单获取可退货项流程分析 退货的时候,调用 services_return.xml 中的获取可进行退货的退货项 getReturnableItems ,该服务调用了Java类 org.ofbi ...
- 用Appium去操作移动设备上的chrome
最近在积极努力的学习Appium,今天成功运行了官网上的demo,在此做一个小小的总结: 前期准备工作: (1)在要运行的真机或模拟器上安装chrome. 注意:x86的虚拟机是不支持的,但是经过本人 ...
- CCF真题之网络延时
201503-4 问题描述 给定一个公司的网络,由n台交换机和m台终端电脑组成,交换机与交换机.交换机与电脑之间使用网络连接.交换机按层级设置,编号为1的交换机为根交换机,层级为1.其他的交换机都连接 ...
- start.s 解析(一)
可以参考 : http://blog.csdn.net/bluesummerg/article/details/5940452 (强大的反汇编) http://www.cnblogs.com/yanh ...
- u盘安装centos
1. 下载centos系统2. 使用UltraISO制作u盘启动.制作方法:http://jingyan.baidu.com/article/a378c960630e61b329283045.html ...