2014-07-22 113 views
0

如何使用Java中的多個屬性對對象列表進行分組? 如果我有State codeDeptBranchAmountAccount的財務詳細信息列表。 現在我想要添加相同的數量state codeDeptBranchAmount,AccountCode使用多個屬性對對象列表進行分組

FinancialDetails f1 = new FinancialDetails("01","005","test1",12.23D,"12345"); 
    FinancialDetails f2 = new FinancialDetails("01","005","test1",123.23D,"12345"); 
    FinancialDetails f3 = new FinancialDetails("01","005","test1",99.23D,"12345"); 
    FinancialDetails f4 = new FinancialDetails("02","006","test1",123.23D,"89898"); 
    FinancialDetails f5 = new FinancialDetails("02","006","test1",125.23D,"89898"); 
    FinancialDetails f6 = new FinancialDetails("03","020","test2",625.23D,"89898"); 
    List<FinancialDetails> list = new ArrayList<FinancialDetails>(); 
    list.add(f1); 
    list.add(f2); 
    list.add(f3); 
    list.add(f4); 
    list.add(f5); 
    list.add(f6); 

現在我想用相同的statecode,部門,分公司添加量來創建一個對象,賬戶

+0

讓我們瞭解您已經嘗試並描述您遇到任何錯誤。 –

+0

我沒有得到任何異常。我試圖分組,以相同的國家代碼,分支,帳戶和對象創建作爲對象通過添加金額 – user1166528

+0

如果您嘗試請包括您嘗試過的代碼。 –

回答

2

嘗試:

private static class Key { 
    String stateCode; 
    String dept; 
    // ... 
    // + hashcode equals 
} 
public Collection<List<FinancialDetails>> group(List<FinancialDetails> original) { 
    Map<Key, List<FinancialDetails>> groupingMap = new HashMap<>(); 
    for(FinancialDetails fd : original) { 
     Key key = new Key(fd.getStateCode, fd.getDept); // ... 
     List<FinancialDetails> group = groupingMap.get(key); 
     if(group == null) { 
      group = new ArrayList<>(); 
      groupingMap.put(key, group); 
     } 
     group.add(fd); 
    } 
    return groupingMap.values(); 
} 
0

類學生{

private String age; 
private String name; 
public String getAge() { 
    return age; 
} 
public void setAge(String age) { 
    this.age = age; 
} 
@Override 
public String toString() { 
    return "Student [age=" + age + ", name=" + name + "]"; 
} 
public String getName() { 
    return name; 
} 
public void setName(String name) { 
    this.name = name; 
} 
public Student(String age, String name) { 
    super(); 
    this.age = age; 
    this.name = name; 
} 

}

publi C類你好{

public static void main(String args[]){ 

    ArrayList<Student> al=new ArrayList<Student>(); 
    al.add(new Student("12","Prince")); 
    al.add(new Student("10", "Amar")); 
    al.add(new Student("12","Akansha")); 
    HashMap<String, List<Student>> map=new HashMap<String, List<Student>>(); 
    Iterator<Student> itr=al.iterator(); 
    while(itr.hasNext()){ 

     Student s1=itr.next(); 
     if(map.containsKey(s1.getAge())){ 

      List<Student> innerList=map.get(s1.getAge()); 
      innerList.add(s1); 
      map.put(s1.getAge(), innerList); 

     }else{ 

      List<Student> innerList=new ArrayList<Student>(); 
      innerList.add(s1); 
      map.put(s1.getAge(),innerList); 

     } 
    } 

    for(Map.Entry<String, List<Student>> entry:map.entrySet()){ 

     String key=entry.getKey(); 
     List<Student> list=entry.getValue(); 
     System.out.print(key+"="); 
     for(Student obj:list){ 

      System.out.print(obj+" "); 
     } 
     System.out.println(); 
    } 


} 

}

相關問題