我正在尝试遍历下面的数组,然后使用下面的格式将元素添加到数组列表中。
这是数组:
String[] arr = {
"room1", "10.11.2017", "17:00-18:00", "meeting event",
"room2", "12.11.2017", "19:00-20:00", "meeting event",
"room3", "20.11.2017", "20:00:21:00", "meeting event",
"room1", "10.11.2017", "18:00-19:00", "meeting event",
"room1", "15.11.2017", "10:00-11:00", "meeting event",
"room2", "12.11.2017", "21:00-22:00", "meeting event",
"room2", "12.11.2017", "22:00-23:00", "meeting event",
"room3", "20.11.2017", "21:00:22:00", "meeting event",
"room1", "10.11.2017", "19:00-20:00", "meeting event",
"room4", "30.11.2017", "09:00-10:00", "meeting event"
};
我想获得一个包含以下字符串元素的新数组列表:
room1 , 10.11.2017 , 17:00-18:00 , 18:00-19:00 , 19:00-20:00 , meeting event
room2 , 12.11.2017 , 19:00-20:00 , 21:00-22:00 , 22:00-23:00 , meeting event
room3 , 20.11.2017 , 20:00:21:00 , 21:00:22:00 , meeting event
room1 , 15.11.2017 , 10:00-11:00 , meeting event
room4 , 30.11.2017 , 09:00-10:00 , meeting event
但我得到了:
room1 , 10.11.2017 , 17:00-18:00 , 18:00-19:00 , 19:00-20:00 , meeting event
room2 , 12.11.2017 , 19:00-20:00 , 21:00-22:00 , 22:00-23:00 , meeting event
room3 , 20.11.2017 , 20:00:21:00 , 21:00:22:00 , meeting event
room1 , 10.11.2017 , 18:00-19:00 , 19:00-20:00 , meeting event
room1 , 15.11.2017 , 10:00-11:00 , meeting event
room2 , 12.11.2017 , 21:00-22:00 , 22:00-23:00 , meeting event
room2 , 12.11.2017 , 22:00-23:00 , meeting event
room3 , 20.11.2017 , 21:00:22:00 , meeting event
room1 , 10.11.2017 , 19:00-20:00 , meeting event
room4 , 30.11.2017 , 09:00-10:00 , meeting event
有没有办法改变下面的代码,以便得到我需要的结果?
ArrayList<String> arr2 = new ArrayList<String>();
String roomNumber= new String();
String bookedDate = new String();
String bookedTime = new String();
String event = new String();
for (int i = 0; i < arr.length; i+=4) {
roomNumber = arr[i];
bookedDate = arr[i+1];
bookedTime = arr[i+2];
event = arr[i+3];
for (int j = i + 4; j < arr.length; j+=4) {
if (arr[i].equals(arr[j]) && arr[i+1].equals(arr[j+1]) && !arr[i+2].equals(arr[j+2])){
bookedTime = bookedTime + " , " + arr[j+2];
}
}
arr2.add(roomNumber + " , " + bookedDate + " , " + bookedTime + " , " + event);
}
for (int k = 0; k <arr2.size(); k++) {
System.out.println(arr2.get(k));
}
谢谢。
答案 0 :(得分:0)
从长远来看,面向对象的方法可以为您提供更好的服务。在我尝试模拟可能的解决方案之前,我想指出以下内容:
在我看来,代表整个系统的模型类会更好。举个例子,你可以有这样一个类:
public class HotelRoom {
private String roomId;
private String roomType;
}
public class Booking {
private HotelRoom room;
private String purpose;
private Date bookingDate;
}
这些模型并不完整,但它们描绘了我的意思。因此,预订信息可能是您的文件中包含的内容,因此您可以在从文件中读取时创建模型,创建这些对象,然后将其放入数组列表中。这种结构有帮助。您可以在需要清晰的地方提出问题。享受
答案 1 :(得分:0)
如https://stackoverflow.com/users/2369963/adamson-jeremiah所述,解决此问题的最佳方法是使用类和对象。但是,如果您要修改现有代码,问题是您正在尝试比较已经检查过的记录。我们可以使用布尔数组来比较已经比较的记录。在这种情况下的记录是4个数组元素的组合。
SELECT * FROM @dummyTable;