gpt4 book ai didi

Java将Arraylist分割成更小的ArrayList

转载 作者:行者123 更新时间:2023-12-02 08:07:20 25 4
gpt4 key购买 nike

我有一个大小为258的ArrayList

现在我希望将其拆分为三个不同的 ArrayList,为此我创建了以下代码:

    Integer start = (int) Math.floor((sitesToSearch.size() / 3));
Integer middle = (int) Math.floor((sitesToSearch.size() / 2));
Integer end = (int) Math.floor((sitesToSearch.size() / 1));

ArrayList<String> crawl_list1 = (ArrayList<String>)tmp.subList(0, start);
ArrayList<String> crawl_list2 = (ArrayList<String>)tmp.subList(start+1, middle);
ArrayList<String> crawl_list3 = (ArrayList<String>)tmp.subList(middle+1, end);

遗憾的是,这会引发以下错误:

Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList$SubList cannot be cast to java.util.ArrayList

那么我怎样才能将它分成三个较小的ArrayList

tmp declaration:

public ArrayList<String> getExternalLinks(ArrayList<String> rootDomains){
ArrayList<String> result = new ArrayList<String>();

Document doc = null;
/*
* Check if root is valid
* Find search the site for internal links
*/
for (String root : rootDomains) {
if (!(root == null) || !root.isEmpty() ||!root.contains("#")) {
try {
doc = Jsoup.connect(root)
.userAgent("Mozilla")
.get();
result.addAll(findExternalLinks(findInternalLinks(doc,root),root));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
System.out.println(result.size());
return result;

}

最佳答案

只需使用 List<String>作为 crawl_list1 的类型.

这只是"code against the interface"一般规则的应用.

确实没有充分的理由要求返回值 subList成为ArrayList (并且它没有意义,因为 subList 返回原始 ArrayList View )。

如果您绝对需要ArrayList对象,那么您需要将内容复制到new ArrayList对象:

ArrayList<String> crawl_list1 = new ArrayList<String>(tmp.subList(0, start));
ArrayList<String> crawl_list2 = new ArrayList<String>(tmp.subList(start+1, middle));
ArrayList<String> crawl_list3 = new ArrayList<String>(tmp.subList(middle+1, end));

关于Java将Arraylist分割成更小的ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20244401/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com