我正在尝试将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();
}
我放在这些数组中的值是从网页中提取的 感谢您的帮助!
答案 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
构造函数的参数的顺序更改为price
,title
和url
,如图所示。
答案 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;