保存最新10个登录用户一点思路

在项目中有时我们需要保存最新的N项数据,一个典型的例子就是保存最新10个登录用户,声明一个数组来保存是一个不错的选择,但这边有个问题:第11个用户怎么保存?将他保存在哪边?常规的思路是删除第1个户,然后其他项全部前移一位,最后将第11个用户保存在第10项,代码如下:

string[] users = new string[10]; //全局数组,只能保存10个用户
int length = 0; //全局变量,保存已登录用户总数量


//模拟n个用户登录
int n = (new Random()).Next(20, 200);
for (int i = 0; i <= n; i++)
{
    length++;
    if (length < 10)
    {
        users[length] = string.Format("User{0}", i);
    }
    else
    {
        //第2项开始全部前移
        for (int j = 1; j < 10; j++)
        {
            users[j - 1] = users[j];
        }
        
        //第10项保存最新用户
        users[9] = string.Format("User{0}", i);
    }
}

//列出最新登录的10个用户
string list = string.Empty;
for (int j = 0; j < 10; j++)
{
    list += users[9-j] + ",";
}
MessageBox.Show(list.TrimEnd(new char[] { ',' }));

实际上没必要这么麻烦,只须将第11位用户保存在第1项、第12位用户保存在第2项...第21位用户保存第1项、第22位用户保存在第2项...,代码如下:

string[] users = new string[10]; //全局数组,只能保存10个用户
int length = 0; //全局变量,保存已登录用户总数量

//模拟n个用户登录
int n = (new Random()).Next(20, 200);
for (int i = 0; i <= n; i++)
{
    length++;
    users[length % 10] = string.Format("User{0}", i);
}

//列出最新登录的10个用户
string list = string.Empty;
for (int j = 0; j < 10; j++)
{
    list += users[(length - j) % 10] + ",";
}
MessageBox.Show(list.TrimEnd(new char[] { ',' }));


评论: 0 | 引用: 0 | 查看次数: 3998
发表评论
登录后再发表评论!