2014-07-14 60 views
0

我有一個字符串列表,並且不斷向此列表中添加元素。 我不希望這個列表增長超過6個元素(索引0到5)。所以一旦到達索引[5],我不想增加列表,而是在列表的開頭添加元素或者做類似的操作。在任何時候,我都會打印最後添加到此列表中的最後3項添加到此列表中的項目。我在下面嘗試過,但我認爲這是糟糕的一段代碼。這段代碼後,如果您想最新項目是最後者列表中的我會得到清單計數和打印UrlList[UrlList.Count - 1],UrlList[UrlList.Count - 2];,UrlList[UrlList.Count - 3] 請幫我一下吧打印添加到字符串列表中的最後3個元素

 if (UrlList.Count == 5) 
    { 
     var move = UrlList[5]; 
     UrlList.RemoveAt(5); 
     UrlList.Insert(0, move); 

     move = UrlList[4]; 
     UrlList.RemoveAt(4); 
     UrlList.Insert(1, move); 

     move = UrlList[3]; 
     UrlList.RemoveAt(3); 
     UrlList.Insert(2, move); 
     UrlList.Add(uri.ToString()); 
    } 

    else 
    { 
     UrlList.Add(uri.ToString()); 
    } 
+0

你在列表中添加3個項目所有的時間?或者你可以在任何給定時間加1-5? –

+0

我將元素1加1到列表中,但每次打印3 - 最後一個元素,最後一個元素-1,最後一個元素-2 –

回答

2

,您可以使用此代碼:

const int Max_Capacity = 6; 

if (UrlList.Count >= Max_Capacity) 
    UrlList.RemoveAt(0); // <- oldest (first) item should be removed 

UrlList.Add(uri.ToString()); 

... 

// Printing out the lastest 3 items: 
int start = UrlList.Count <= 3 ? 0 : UrlList.Count - 3; 

for (int i = start; i < UrlList.Count; ++i) 
    Console.Out.WriteLine(UrlList[i]); 
0

我想你最好使用%Operator-。

你的情況,你可以使用:

UrlList.Insert((UrlList.count%6),move); 
相關問題