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 ...
随机推荐
- LED_9261在linux2.6.30中tick_led的实现
在linux2.6.30内核中,内核也提供了相关的平台驱动来操作gpio或LED,但更简便的方法是直接操作GPIO来控制led. 网上一博文中介绍直接封装led_on和led_off()函数直接调用即 ...
- error MIDL2311 : statements outside library block are illegal in mktyplib compatability mode
解决办法: 1. Do not use the /mktyplib203 switch unless you have to deal with legacy code dating back to ...
- Java常用锁机制简介
在开发Java多线程应用程序中,各个线程之间由于要共享资源,必须用到锁机制.Java提供了多种多线程锁机制的实现方式,常见的有synchronized.ReentrantLock.Semaphore. ...
- python urllib2 Basic认证
1.通过添加http header 来实现 import urllib2 from base64 import encodestring url = 'http://202.108.1.51' use ...
- HTTP报文
HTTP报文分为请求报文(request message)与响应报文(response message). 一.报文的组成部分 一个HTTP报文由3部分组成,分别是: (1).起始行(start li ...
- swift语言实战晋级-第9章 游戏实战-跑酷熊猫-9-10 移除平台与视差滚动
9.9 移除场景之外的平台 用为平台是源源不断的产生的,如果不注意销毁,平台就将越积越多,虽然在游戏场景中看不到.几十个还看不出问题,那几万个呢?几百万个呢? 所以我们来看看怎么移除平台,那什么样的平 ...
- dev c++ 的一些快捷键
Ctrl+N新建源代码Ctrl+O打开工程或源文件Ctrl+S保存Ctrl+Alt+S另存为Ctrl+W关闭Ctrl+P打印Ctrl+Z回复Ctrl+Y重做Ctrl+Q切换头/源文件Ctrl+.注释C ...
- Leetcode: Majority Element II
Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. The algorit ...
- [转]Hibernate不能自动建表解决办法及Hibernate不同数据库的连接及SQL方言
最近开始学Hibernate,看的是李刚的那本<轻量级java ee企业应用实战>.头一个hibernate程序,我原原本本的按照书上例子写下来,同时只是改动了些mysql的连接参数,并且 ...
- 利用最新版的RubyMine2016.2开发Ruby On Rails 程序
经过我的前两篇博文 ”Ruby On Rails环境搭建“ 和”Ruby On Rails 环境搭建MySQL数据库连接“ 我们已经具备了开发Ruby On Rails程序的一切要素,但是天天对着do ...