たとえば、RecordGroup という Java オブジェクトがあります。クラスの署名は以下のとおりです。
パブリック クラス RecordGroup {
private String owner;
private Integer startRow;
private Integer recordCount;
public RecordGroup() {
}
public RecordGroup(String owner, Integer startRow, Integer recordCount) {
this.owner = owner;
this.startRow = startRow;
this.recordCount = recordCount;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public Integer getRecordCount() {
return recordCount;
}
public void setRecordCount(Integer recordCount) {
this.recordCount = recordCount;
}
public Integer getStartRow() {
return startRow;
}
public void setStartRow(Integer startRow) {
this.startRow = startRow;
}
}
そして、以下に示すように、上記のオブジェクトのリストを保持するリストがあります。
パブリック クラス テスト {
List<'RecordGroup'> mergerMap = new ArrayList<'RecordGroup'>();
mergerMap.add(new RecordGroup("RECORD", 1, 6));
mergerMap.add(new RecordGroup("RECORD", 7, 9));
mergerMap.add(new RecordGroup("RECORD", 3, 4));
mergerMap.add(new RecordGroup("ZONE", 3, 1));
mergerMap.add(new RecordGroup("MODULE", 5, 6));
mergerMap.add(new RecordGroup("ZONE", 14, 28));
mergerMap.add(new RecordGroup("ZONE", 6, 30));
mergerMap.add(new RecordGroup("MODULE", 1, 60));
mergerMap.add(new RecordGroup("OFFICE", 2, 4));
mergerMap.add(new RecordGroup("OFFICE", 8, 6));
mergerMap.add(new RecordGroup("USER", 1, 6));
mergerMap.add(new RecordGroup("USER", 9, 8));
mergerMap.add(new RecordGroup("USER", 5, 7));
mergerMap.add(new RecordGroup("OFFICE", 3, 1));
}
私の質問は、上記の RecordGroup オブジェクトのリストを「所有者」と「startRow」でソートして、レコードを所有者でグループ化できるようにする方法です。つまり、最初に「ZONE」グループ、次に「OFFICE」グループ、次に「USER」グループと次に「MODULE」、最後に「RECORD」グループがリストに表示されます。また、ソートおよびグループ化の際に「startRow」フィールドを考慮する必要があります。つまり、各グループを「startRow」フィールドの値で昇順に並べ替えます。
出力は次のようになります。
mergerMap.add(new RecordGroup("ZONE", 3, 1));
mergerMap.add(new RecordGroup("ZONE", 6, 30));
mergerMap.add(new RecordGroup("ZONE", 14, 28));
mergerMap.add(new RecordGroup("OFFICE", 2, 4));
mergerMap.add(new RecordGroup("OFFICE", 3, 1));
mergerMap.add(new RecordGroup("OFFICE", 8, 6));
mergerMap.add(new RecordGroup("USER", 1, 6));
mergerMap.add(new RecordGroup("USER", 5, 7));
mergerMap.add(new RecordGroup("USER", 9, 8));
mergerMap.add(new RecordGroup("MODULE", 1, 60));
mergerMap.add(new RecordGroup("OFFICE", 2, 4));
mergerMap.add(new RecordGroup("MODULE", 5, 6));
mergerMap.add(new RecordGroup("RECORD", 1, 6));
mergerMap.add(new RecordGroup("RECORD", 3, 4));
mergerMap.add(new RecordGroup("RECORD", 7, 9));