'userName' ve 'skills' tarafından oluşturulan bir Dto Listem var. Örneğin: userName: "John", becerileri: 5Java'da splice arraylist ve ikinci kısmı gruplandır
Beşten fazla öğe varsa (bu yüzden 5 kullanıcı) İlk beşi korumak ve diğerini bir ad altında gruplamak istiyorum ('Diğerleri') ve bir yetenek altında (tüm becerilerin toplamı). Alt liste yöntemini kullanmayı, iki geçici dizi oluşturmayı, ikinci dizinin dto'sunu gruplamayı ve ana Arraylist'te bir araya getirmeyi düşündüm. Bu benim kodum ama çalışmıyor. Niye ya?
final List<MyDto> usersData = mydao.getUsers();
List<MyDto> result = new ArrayList<MyDto>();
if (usersData != null && usersData.size() > 0) {
List<MyDto> tmpFirstFiveUsers = new ArrayList<MyDto>();
List<MyDto> tmpOthers = new ArrayList<MyDto>();
if(usersData.size() > 5) {
// Save first 5 users
tmpFirstFiveUsers = usersData.subList(0, 5);
// Save others
tmpOthers = usersData.subList(5, usersData.size());
// Sum of 'others' skill
int skills = 0;
for (MyDto other : tmpOthers) {
skills += other.getSkills();
}
String other = "Altro";
MyDto emptyDto = new MyDto();
emptyDto.setUserName(other);
emptyDto.setSkills(skills);
tmpOthers.clear();
tmpOthers.add(emptyDto);
}
result.clear();
result.addAll(tmpFirstFiveUsers);
result.addAll(tmpOthers);
GÜNCELLEME: Ben doğru alt listesini yapamaz , bu işe yaramaz. Ben anlamak da bir örnek vermek: usersData:
- userName: "a", beceri: "2"
- userName: "b" becerileri: "1"
- userName: "c " becerileri: "5"
- adı: "d" beceri: "5"
- adı: "e", beceri: "5"
- adı: "F", beceri: "5"
- userName: "g", beceri: "5"
- userName: "h", becerileri: "5"
- userName: "i", becerileri: "5" Beklediğim ne
geçerli: usersData:
- userName: "a", beceri: "2"
- adı: "B", beceri: "1"
- adı: "c", beceri: "5"
- adı: "d" becerileri: "5 "
- adı: "e", beceri: "5"
- adı: "Diğer", beceri: "20"
'o work' değil - bu konuda spesifik olması unutmayın. Ne alıyorsun? Mümkünse bir örnekle ne bekliyordunuz? – Thomas
son 3 ifadesi "if" koşulu içinde olmalıdır, aksi takdirde "tmpFirstFiveUsers" ve "tmpOthers" boş listeler olur. – Braj
Btw, listeniz 5 veya daha az kullanıcı içeriyorsa, 'tmpFirstFiveUsers' boş olacaktır - en azından kodunuz bunu gösterir. – Thomas