2017-07-26 81 views
0

對不起,長的描述另一個排序列表上,但我試圖解釋精確的內容,排序列表取決於它有一個共同的屬性進行排序

我有這樣不同對象的兩個列表,

class Company { 
    int id; 
    String name; 
    /* getters and setters */ 
} 

class CompanyBySupplier { 
    String nameId; 
    Long stakeValue; 
    Long incomeValue; 
    /* getters and setters */ 
} 

在這些列表共同屬性是,公司的idCompanyBySupplier

listToSortnameIdCompanyBySupplier和對象名單是Company對象列表,

List<CompanyBySupplier> listToSort = {["ID3,546456,56464"],["ID4",4565,456456],["ID1,1234,2345"],["ID2",4335,34535],["ID5,345,546"]} 

List<Company> sortedList = {["ID1","A"],["ID2","B"],["ID3","C"],["ID4","D"],["ID5","E"]} 

如果您發現sortedList已經排序,這取決於我要爲lisToSort做間接的name屬性。

這意味着,我需要listToSortsortedList順序用的CompanyidCompanyBySupplier

所以期望輸出應該是nameId比較,

list listToSort = {["ID1,1234,2345"],["ID2",4335,34535],["ID3,546456,56464"],["ID4",4565,456456],["ID5,345,546"]} 

因爲ID1,ID2,ID3, ID4,ID5是公司sortedList中的訂單。

我能想到的是通過比較ID,並且將包含新類型的對象像兩個列表的創建填充NameID一個新的列表,

class CompanyData { 
    String actualCompanyName; 
    Long stakeValue; 
    Long incomeValue; 
} 

,並使用比較器對actualCompanyName這將解決我的問題。 但我有興趣知道是否有任何其他更好的方式做到這一點

+0

This java? Object Company {...} - 它是什麼? –

+0

和列表 sortedList = {[「ID1」,「A」] ...,但公司類(如果它是java)有int和String字段,有2個字符串字段 –

+0

@Alexei Stepanov是java對象,但只是爲了視覺上的理解,我提到它是這樣的 – tyro

回答

1

您的排序列表已經排序在Id的基礎上。你可以在同一個ID的基礎上排序第二個列表。

List<CompanyBySupplier> listToSort = new List<CompanyBySupplier> { new CompanyBySupplier() { nameId = "ID3", stakeValue = "546456", incomeValue = "56464" }, new CompanyBySupplier() { nameId = "ID4", stakeValue = "546456", incomeValue = "56464" }, new CompanyBySupplier() { nameId = "ID2", stakeValue = "546456", incomeValue = "56464" }, new CompanyBySupplier() { nameId = "ID1", stakeValue = "2345", incomeValue = "2346" } }; 
       List<Company> sortedList = new List<Company>() { new Company(){ id = "ID1", name = "A" }, new Company() { id = "ID2", name = "B" }, new Company() { id = "ID3", name = "C" } }; 


       listToSort.Sort(delegate(CompanyBySupplier x, CompanyBySupplier y) 
       { 
        return x.nameId.CompareTo(y.nameId); 
       }); 

       foreach (var item in listToSort) 
       { 

        Console.WriteLine(item.nameId); 
       } 
       Console.ReadKey(); 
      } 
     } 

     public class Company 
     { 
      public string id { get; set; } 
      public string name { get; set; } 
     } 

     public class CompanyBySupplier 
     { 
      public String nameId; 
      public string stakeValue; 
      public string incomeValue; 
     } 
+0

謝謝raza.hasnain爲您提供幫助,但我;我正在尋找java收集解決方案 – tyro

相關問題