我有一个带有成千上万个具有许多变量(包括城市)的属性的ArrayList。我只需要访问/返回特定城市的属性,例如萨里的所有属性。我如何获得它们?
我知道如何通过city.values(“ Surrey”)来搜索它们。但是我不知道如何输出值。
public ArrayList<AirbnbListing> load() {
System.out.print("Begin loading Airbnb london dataset...");
ArrayList<AirbnbListing> listings = new ArrayList<AirbnbListing>();
try{
URL url = getClass().getResource("airbnb-london.csv");
CSVReader reader = new CSVReader(
new FileReader(new File(url.toURI())
.getAbsolutePath()));
String [] line;
//skip the first row (column headers)
reader.readNext();
while ((line = reader.readNext()) != null) {
String id = line[0];
String name = line[1];
String host_id = line[2];
String host_name = line[3];
neighbourhood = line[4];
double latitude = convertDouble(line[5]);
double longitude = convertDouble(line[6]);
String room_type = line[7];
int price = convertInt(line[8]);
int minimumNights = convertInt(line[9]);
int numberOfReviews = convertInt(line[10]);
String lastReview = line[11];
double reviewsPerMonth = convertDouble(line[12]);
int calculatedHostListingsCount = convertInt(line[13]);
int availability365 = convertInt(line[14]);
AirbnbListing listing = new AirbnbListing(id, name, host_id,
host_name, neighbourhood, latitude, longitude, room_type,
price, minimumNights, numberOfReviews, lastReview,
reviewsPerMonth, calculatedHostListingsCount, availability365
);
listings.add(listing);
//newham();
}
答案 0 :(得分:0)
如果您使用的是Java 8或更高版本,则可以使用以下选项:
list.stream().filter(x -> "Berlin".equals(x.getCity())); //This filters the list and returns a list with city = Berlin.
希望这是您想要的。
答案 1 :(得分:0)
我假设您想在AirbnbListing列表中进行搜索。您可以使用Java Stream。为此,请使用filter
方法:
List<AirbnbListing> matchingListings = listings.stream()
.filter(l -> "Surrey".equals(l.getCity()))
.collect(Collectors.toList());
如果要获取所有城市的列表,可以使用map
方法:
List<String> matchingListings = listings.stream()
.map(l -> l.getCity())
.collect(Collectors.toList());
此外,here是官方的Java流说明教程。