范型List 排序的問題解決方案

2022-03-15 06:27:34 字數 1568 閱讀 6386

乙個專案中用到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 ...

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個數...