我有Arraylist
条记录。
package com.demo.myproject;
public class Records
{
String countryName;
long numberOfDays;
public String getCountryName() {
return countryName;
}
public void setCountryName(String countryName) {
this.countryName = countryName;
}
public long getNumberOfDays() {
return numberOfDays;
}
public void setNumberOfDays(long numberOfDays) {
this.numberOfDays = numberOfDays;
}
Records(long days,String cName)
{
numberOfDays=days;
countryName=cName;
}
}
我的Arraylist<Records>
包含值
Singapore 12
Canada 3
United Sates 12
Singapore 21
我需要修改它以使我的输出
Canada 3
Singapore 33
United States 12
请帮我解决问题,方法。
答案 0 :(得分:1)
您可以将您的记录存储在地图中,其中密钥是国家/地区。
当您收到新记录时,请检查该国家/地区是否已在该地图中,如果是,请添加天数,如果没有,则添加。
Map<String, Record> map = new HashMap<String, Record> ();
addRecord(map, someRecord);
private void addRecord(Map<String, Record> map, Record record) {
Record inMap = map.get(record.getCountryName());
if (inMap == null) {
inMap = record;
} else {
inMap.setNumberOfDays(inMap.getNumberOfDays() + record.getNumberOfDays());
}
map.put(record.getCountryName(), inMap);
}
注意:
map.values();
并迭代它们来获取记录集合答案 1 :(得分:1)
public class RecordsMain {
static ArrayList<Records> al = new ArrayList<Records>();
static boolean flag = false;
public static void main(String[] args) {
Records rec1 = new Records(12,"Singapore");
Records rec2 = new Records(3,"Canada");
Records rec3 = new Records(12,"United States");
Records rec4 = new Records(21,"Singapore");
addToList(rec1);
addToList(rec2);
addToList(rec3);
addToList(rec4);
for (int i = 0; i < al.size(); i++) {
System.out.println(al.get(i).getCountryName() + " :: " + al.get(i).getNumberOfDays());
}
}
public static void addToList(Records records) {
for (int i = 0; i < al.size(); i++) {
if(al.get(i).getCountryName().equals(records.getCountryName())) {
al.get(i).setNumberOfDays(al.get(i).getNumberOfDays()+records.getNumberOfDays());
flag=true;
}
}
if (flag == false)
al.add(records);
}
}
注意:
addToList
添加记录,添加时会检查CountryNames
是否重复,如果是,则添加天数,并且不会标记ArrayList
的任何新条目List
的排序,因此没有尝试过。答案 2 :(得分:0)
我想你自己创建这些记录。如果您不需要任何特定的元素顺序,您应该使用HashMap,并且如同assylias所说 - 只有当它们不存在时才创建国家元素。当你需要保持元素的顺序(或者稍后按名称对它们进行排序等)时,你仍然可以使用ArrayList和&#34; indexOf()&#34;方法很容易找到它们。
答案 3 :(得分:0)
我不知道你想要在那里做什么,但是如果你想用特定的标准对它进行排序那么你可以使用可比较或比较器接口来使用ArrayList中的条件对记录进行排序并使用collections.sort()方法进行排序它