У меня есть список, который содержит Billing ID
и Email
данных. Идентификатор фактуры и электронная почта могут быть дублированы в списке.Список данных группы по конкретному значению
Вот мой список данных:
List<Bill> billings = new ArrayList<Bill>();
Bill bill1 = new Bill("90008489", "[email protected]");
Bill bill2 = new Bill("90008489", "[email protected]");
Bill bill3 = new Bill("90008489", "[email protected]");
Bill bill4 = new Bill("90008490", "[email protected]");
Bill bill5 = new Bill("90008490", "[email protected]");
Bill bill6 = new Bill("90008491", "[email protected]");
billings.add(bill1);
billings.add(bill2);
billings.add(bill3);
billings.add(bill4);
billings.add(bill5);
billings.add(bill6);
Вот мой Java-класс для Билла:
public class Bill {
private String id;
private String email;
private List<String> emails;
public Bill(String id, String email) {
super();
this.id = id;
this.email = email;
}
public Bill(String id, List<String> emails) {
super();
this.id = id;
this.emails = emails;
}
... Getter and Setter
Я хочу группирования, что данные списка по Billing ID. Если найден такой же идентификатор фактуры, я хочу объединить данные электронной почты.
Я застрял, когда его построить. Это мой код.
List<Bill> newBillings = new ArrayList<Bill>();
for (int i = 0; i < (billings.size() - 1); i++) {
List<String> emails = new ArrayList<String>();
emails.add(billings.get(i).getEmail());
//System.out.println(billings.get(i+1).getId());
if (billings.get(i).getId() == billings.get(i + 1).getId()) {
emails.add(billings.get(i+1).getEmail());
}
}
for (Bill bill : newBillings) {
System.out.println(bill.getId());
for (String email : bill.getEmails()) {
System.out.print(email + ",");
}
System.out.println("\n-----");
}
Мой ожидаемый результат:
90008489 - [[email protected], [email protected], [email protected]]
90008490 - [[email protected], [email protected]]
90008491 - [[email protected]]
Ничего себе. Он работает, спасибо вам большое. Я очень смутился. Как подготовить логику цикла? :( – fanjavaid
@fanjavaid Когда вы говорите в своей голове «group by», вы должны подумать об использовании Карты. Тогда вам нужно подумать, чтобы увидеть, как вы будете группировать свои элементы, тогда это просто вопрос чтения doc, чтобы просмотреть доступные методы. Просто попробуйте тренироваться, и в будущем это станет проще и проще. –
@fanjavaid О, также вы не должны сравнивать значения String с помощью '=='. Вместо этого используйте 'equals()'. –