乙個專案中用到list<>中是乙個類的例項,並且需要對多個list<>進行排序的問題,結合上網查詢得出以下的方法。
其中第三個解決方案是qihangnet給出的,效率是最高的
專案中的類用乙個p類來代替
public class p
public string value
}實際運用過程中p有三個例項
p p1 = new p() ;
p p2 = new p() ;
p p3 = new p() ;
1、如果列表建立如下:
listlp1 = new list();
lp1.add(p1);
lp1.add(p2);
listlp2 = new list lp2.add(p1);
lp2.add(p2);
如果:console.writeline(lp1==lp2);
結果false,很正常,因為lp1和lp2的引用位置不相同,自然是不相等的。除非直接lp1=lp2,否則這兩個值總是不相等的。
console.writeline(lp1.sequenceequal(lp2));
結果true,因為sequenceequal比較的是list<>裡面序列
2、如果列表中新增的順序不一樣
listlp1 = new list();
lp1.add(p1);
lp1.add(p2);
listlp2 = new listlp2.add(p2);
lp2.add(p1);
結果:console.writeline(lp1==lp2);
console.writeline(lp1.sequenceequal(lp2));
均是false,因為順序也不一樣了sequenceequal按順序比較也不相等了
3、這個時候就需要使用sortedlist對內部的專案自動進行排序了
無論是:
sortedlistslp1 = new sortedlist();
slp1.add(p1.key,p1);
slp1.add(p2.key,p2);
sortedlistslp2 = new sortedlist();
slp2.add(p1.key, p1);
slp2.add(p2.key, p2);
還是:sortedlistslp1 = new sortedlist();
slp1.add(p1.key,p1);
slp1.add(p2.key,p2);
sortedlistslp2 = new sortedlist();
slp2.add(p2.key, p2);
slp2.add(p1.key, p1);
console.writeline(slp1.sequenceequal(slp2));
結果都為true了。
在這我想請教一下高手,有沒有別的更好的辦法,判斷list<>是否相等
范型List 排序的問題解決方案
乙個專案中用到list 中是乙個類的例項,並且需要對多個list 進行排序的問題,困擾了好長時間,最後qihangnet給出乙個解決方案 專案中的類用乙個p類來代替 public class p public string value 實際運用過程中p有三個例項 p p1 new p p p2 ne...
Jar Hell 問題解決方案
最近看到溫紹錦的jvm基礎,裡面看到這個jar hell問題的解決方法,之前遇到過一次,是乙個資源檔案,當時覺得挺麻煩,不知道還有這個方法,很棒,特地整理了下,記錄到這裡來,這個部落格開了好長時間了,一直以來也懶得寫東西,以後會堅持更新些。classloader classloader thread...
top K問題解決方案
1.使用最大最小堆。求最大的數用最小堆,求最小的數用最大堆。2.quick select演算法。使用類似快排的思路,根據pivot劃分陣列。3.使用排序方法,排序後再尋找top k元素。4.使用選擇排序的思想,對前k個元素部分排序。5.將1000 個數分成m組,每組尋找top k個數,得到m k個數...