从ArrayList返回特定对象

时间:2019-03-13 21:51:20

标签: java arrays arraylist

我有一个带有成千上万个具有许多变量(包括城市)的属性的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();
        }           

2 个答案:

答案 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流说明教程。