本人博客园首个随笔-----如何处理数值系列
声明:本人第一次写..如有不足..或有错误...敬请提出.......希望可以通过大家的帮助得到更多知识...
先来谈谈..我在一个项目中遇到的问题吧
我在一个项目中:要将
data,couter
100,1
100,1
102,1
103,2
103,4
105,2
105,3
105,2
目的:要将相同关键字的data中的couter累加到一起..
100,2
102,1
103,6
105,7
由于在C#中有命名空间中
using System.Collections;
using System.Collections.Specialized;
有这样的一些
NameValueCollection
集合类;
我相信这些集合可以帮助我处理这个问题;
官方给NameValueCollection定义为特殊集合一类,在System.Collections.Specialized下。
System.Collections.Specialized下还有HybridDicionary类,建议少于10个元素用HybridDicionary,当元素增加会自动转为HashTable。
System.Collections.Specialized下还有HybridDicionary类,字符串集合。
System.Collections.Specialized下还有其他类大家可以各取所需!
言归正转主要说NameValueCollection,HashTable 和 NameValueCollection很类似但是他们还是有区别的,HashTable 的KEY是唯一性,而NameValueCollection则不唯一!
在仔细参考啦不少的资料后,我便开始下手:
static void Main(string[] args)
{
///初始化测试数据;
ArrayList data=new ArrayList();
ArrayList couter=new ArrayList();
data.Add(100);
data.Add(100);
data.Add(102);
couter.Add(1);
couter.Add(1);
couter.Add(1);
MakeDataCouter(data, couter);//
}
/// <summary>
/// 用于...得到一组没有重复关键字的集合,而且这个集合中..重复的数值.的个数也计算出来..实现啦...//
/// </summary>
/// <param name="data"></param>
/// <param name="couter"></param>
/// <returns></returns>
public static NameValueCollection MakeDataCouter(ArrayList data, ArrayList couter)
{
//强度;
NameValueCollection myCol = new NameValueCollection();
for (int i = 0; i < data.Count; i++)
{
myCol.Add(data[i].ToString(), couter[i].ToString());
}
ArrayList c = new ArrayList();
ArrayList d= new ArrayList();
for (int n = 0; n < myCol.Count; n++)
{
c.Add(myCol.Get(n).ToString());//
d.Add(myCol.GetKey(n).ToString());
//myCol.GetKey(data[n].ToString());
}
ArrayList NorepeatCouter = new ArrayList();//没有重复的元素ID个数;也就是每个元素ID的个数;
for (int k = 0; k < d.Count; k++)
{
string[] cc = c[k].ToString().Split(',');//第一个元素的个数和;
NorepeatCouter.Add(Num(cc));
//计算元素ID个数;
}
NameValueCollection EidAndcouter = new NameValueCollection();
for (int q = 0; q< d.Count; q++)
{
EidAndcouter.Add(d[q].ToString(), NorepeatCouter[q].ToString());
}
return EidAndcouter;
}
/// <summary>
/// 用来对数组内部累加....例如1,1累加2;
/// </summary>
/// <param name="cc"></param>
/// <returns></returns>
public static int Num(string[] cc)
{
int s=0;
for (int k = 0; k <cc.Length; k++)
{
//计算元素ID个数;
s=s+Convert.ToInt32(cc[k].ToString());
}
return s;
}
代码不难......就不多加解释...
很晚啦,睡觉去....过几天就要大四啦,...先写着吧.....如果大家有什么想法可以留言....
posted on 2008-08-27 01:30 SUNJUNLIN 阅读(1638) 评论(14) 编辑 收藏 举报
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档