gpt4 book ai didi

java - 从 ArrayList 中移除对象

转载 作者:行者123 更新时间:2023-11-30 07:07:21 27 4
gpt4 key购买 nike

我有两个类,Image 和 Channel。Image 有一个 imageId,Channel 有一个 channelId,它们唯一地标识一个 Image 和 Channel 对象。还存在一些其他属性。

Image 类还有一个 channelId,我使用它来确定图像已分配到哪个 channel 。我有两个 ArrayLists,分别是 Image 和 Channel。

    List<Image> imageList = getItemist("image");
List<Image> channelList = getItemList("channel");

现在,我想从图像列表中删除所有那些包含 channelId 的图像对象,这些图像对象存在于 channelList 的 channel 对象中。

截至目前,我正在迭代这两个列表,然后比较 channelId,将 Image 对象放入 TreeSet 中,最后返回一个列表。你能帮我提供一个更简单或更有效的解决方案吗?

最佳答案

这听起来像是 ListIterator 的一个很好的用例:

ListIterator iter = imageList.listIterator(); 
Image curr = null;
while (iter.hasNext){
curr = iter.next();
for (Image img : chanelList){
if (img.chanelId == curr.chanelId){ //assuming chanelId is a primitive
iter.remove(curr); //remove curr
break; //break from the for loop to go on to the next image in imageList
}
//implicit: else continue; (i.e. go on to check the next image in chanelList)
}
}

请注意,这是一个复杂度为 O(n^2) 的算法,无法很好地适应大型列表。有一些方法可以进一步优化它(参见 @dasblinkenlight 的评论,其中之一),但为了概念清晰起见,我将把这个答案的范围限​​制在这个范围内。

关于java - 从 ArrayList 中移除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25007085/

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