合并2个具有空值的对象的数组列表

时间:2018-07-03 17:00:12

标签: java arraylist

我正在尝试将2个对象的数组列表连接为一个,但是我不知道该怎么做。我已经尝试过addAll和add,但是那些方法并不能真正做到我想要的。 基本上,我有一个数组列表,其值如下:

SearchResult1 [title=null, url=null, price=19 690 EUR]

另一个具有这样的值:

SearchResult2 [title=Ford Car, url=http://www.something.com, price=null]

我如何将这两个数组合并为一个这样的值:

SearchResult3 [title=Ford Car, url=http://www.something.com, price=19 690 EUR]

这是到目前为止的代码:

  public List searchMethod() {
                try {
                    final String query = "ford";

                    final Document page = Jsoup.connect("link" + URLEncoder.encode(query, "UTF-8")).userAgent(USER_AGENT).get();

                     List<SearchResult> resultList1 = new ArrayList<SearchResult>();
                     List<SearchResult> resultList2 = new ArrayList<SearchResult>();
                     List<SearchResult> resultList3 = new ArrayList<SearchResult>();


                    for(Element searchResult : page.select(".offer-price")) {
                         String price = searchResult.text();
                         resultList1.add(new SearchResult(price));
                    }

                    for(Element searchResult : page.select(".offer-title__link")) {
                         String title = searchResult.text();
                         String url = searchResult.attr("href");
                         resultList2.add(new SearchResult(title, url));
                    }
                    resultList3.addAll(resultList1);
                    resultList3.addAll(resultList2);

                    return resultList3;

                }catch(Exception e) {
                    e.printStackTrace();
                }

                return Collections.emptyList();

        }

我放在这些数组中的值是从网页中提取的 感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

comment中,您已经说过,您只想按每个索引来关联/合并两个列表中的对象。

您可以简单地遍历列表,构造一个新的SearchResult(假设您具有字段的吸气剂)

for(int i = 0; i < resultList1.size(); i++) {
    resultList3.add(new SearchResult(resultList1.get(i).getPrice(),
                   resultList2.get(i).getTitle(),
                   resultList2.get(i).getUrl()));
}

您可能需要将传递给SearchResult构造函数的参数的顺序更改为pricetitleurl,如图所示。

答案 1 :(得分:1)

为什么不一口气做完?

List<SearchResult> resultList1 = new ArrayList<SearchResult>();
for(Element searchResult : page.select(".offer-title__link")) {
    String title = searchResult.text();
    String url = searchResult.attr("href");
    resultList1.add(new SearchResult(title, url));
}
int index = 0;
for(Element searchResult : page.select(".offer-price")) {
    String price = searchResult.text();
    //since you have already assumed 
    //that price will come in the same order and title and url.
    resultList1.get(index++).setPrice(price);
}
return resultList1;