草庐IT

树和树的遍历

全部标签

java - 如何在遍历集合时安全地从集合中删除其他元素

我正在迭代JRECollection,它强制执行快速失败迭代器概念,因此如果Collection将抛出ConcurrentModificationException在迭代时被修改,而不是通过使用Iterator.remove()方法。但是,如果对象满足条件,我需要删除该对象的“逻辑伙伴”。从而防止合作伙伴也被处理。我怎样才能做到这一点?也许为此目的使用更好的集合类型?例子。myCollectionfor(BusinessObjectanObject:myCollection){if(someConditionIsTrue){myCollection.remove(anObjectsPa

java - 遍历列表,修改每个元素 : is there a faster method?

我有一个List的String,我想trim()列表的每个元素。目前,我正在使用ArrayList,对元素进行简单的循环,并将修剪后的元素添加到返回列表中,如下所示:intlistLen=listToTrim.size();ListtrimmedList=newArrayList(listLen);for(inti=0;i对于大型列表,是否有更有效的方法? 最佳答案 不,你很好。这与它的效率差不多。没有什么魔法可以避免迭代。有一点要记住,'不过:如果listToTrim不是随机访问列表(即它不实现RandomAccess),那么使用

java - 遍历外星人列表

假设我有一个通过任意方法返回的列表:ListsomeList=someObject.getList();someList可以在任何时候被另一个线程中的someObject改变。我无权访问someObject的实现,并且someObject.getList()不返回同步或不可变列表实现。我想遍历someList。不幸的是,由于列表可以更改,因此遍历它通常不起作用://SometimesthrowsConcurrentModificationExceptionfor(Eelement:someObject.getList()){doSomething(element);//...}那么我如

java - 在我的案例中,我可以在不循环遍历所有前面元素的情况下计算一个元素吗(参见问题正文)?

我有2个相同长度的double组。数组a填充一些数据,数组b要计算。数组b的每个元素等于数组a的对应值加上数组b中所有前面元素的加权和。加权和的计算方法是将所有这些元素分别乘以一个系数,该系数等于它与我们计算的当前元素的距离除以前一个子集中的元素数。为了实现这一点,我为我计算的每个元素循环遍历整个前面的子集。这可以优化吗?我没有足够的数学技能,但我怀疑我只能使用第一个前面的元素来计算每个下一个元素,因为每个元素都已经从前面的集合中派生出来并且包含它已经加权的所有信息。也许我可以只调整权重公式并在没有二级循环的情况下获得相同的结果?这似乎是Scala中的一个示例(我不确定它是否正确:-]

java - 遍历 Java 集合以使这些球反弹,有什么提示吗?

如果问题不清楚,我深表歉意,但我想不出另一种表达方式。这是我整个周末都在BlueJ完成的类作业。我必须更改一种方法(弹跳),让用户选择应该弹跳多少个球。其他要求是:球应该有不同的大小,并且在弹起之前应该在屏幕顶部排成一行。为了做到这一点,我必须使用一个集合(ArrayList、HashMap、HashSet)。到目前为止,我已经使用了HashMap并且能够让用户选择一些随机大小的“球”,这些“球”将它们自己放置在屏幕上半部分的随机位置。当我尝试让每个球从其在屏幕顶部的位置反弹,并在右侧结束时,我卡住了。我可以让代码绘制一个球,弹起它然后画另一个球,弹起它等等,直到用户选择的球数循环为止

java - 如何从前序和中序遍历构建二叉树

我正在做一项关于从前序和中序遍历(每个节点中的一个字符)构建二叉树的作业,我正在努力思考如何构建实际的树。以下是我关于如何实现这一点的思考过程:将前序中的第一个条目存储为根节点在订单中搜索该条目。取根节点左边的char,保存为char数组。取根节点右边的char,保存为char数组。创建一棵新树,以根为父节点,其2个子节点为左右字符数组。继续递归直到前序长度为0。我已经完成了第1-4步,但我不太确定如何正确构建我的树,并且想知道是否有人有任何指示。谢谢。 最佳答案 在构建新树之前进行递归。因此,您的列表将如下所示:如果数组的长度为1

java - 导航不同对象的复杂树的最佳方法是什么?

例如:classVehicle{Collectionaxles;}classAxle{Collectionwheels;}classWheel{//Ithinkthereareduallyrimsthattaketwotires--justgowithitCollectiontires;}classTire{intwidth;intdiameter;}我有一个服务,通过它我可以获得我知道的所有Vehicle对象的集合。现在假设我有一个特定宽度和直径的轮胎,我想找到一辆可以承受它的车辆。最简单的方法是使用一组四个嵌套循环,如下所示:for(Vehiclevehicle:vehicles)

java - 两人网格遍历游戏

给定一个M*N两个玩家的网格和位置p1和p2在网格上。有n个球放置在网格上的不同位置。设这些球的位置为B(1),B(2),B(3)...,B(n).我们需要计算拾取所有球所需的最小曼哈顿距离。应按升序拾取球,即如果B(i)在B(j)之前被采摘如果i.考虑以下示例案例:p1=(1,1)p2=(3,4)让我们考虑球的位置B(1)=(1,1),B(2)=(2,1),B(3)=(3,1),B(4)=(5,5)输出将为5因为p1会先选择B(1),B(2),B(3)和p1会选择B(4)我的方法我做了一个greedyapproach并计算出p1的距离和p2来自给定的球B(i)(从i=1ton开始)并

java - 如何使用 Java 8 流遍历多个列表?

我有三个列表,Listlist1=newArrayList(List.of(1,1.5));Listlist2=newArrayList(List.of(30,25));Listlist3=newArrayList(List.of(30,25));我想同时遍历每一个,然后打印130301.52525如何使用java-8流API执行此操作? 最佳答案 你可以这样做(假设所有列表的大小相同):IntStream.range(0,list1.size()).forEach(x->Syso(list1.get(x)+""+list2.get

java - 在 Java 中遍历 ArrayList 的 ArrayList

我有以下ArrayList...ArrayList>row1=newArrayList>();下面的数组列表被添加到它....row1.add(cell1);row1.add(cell2);row1.add(cell3);row1.add(cell4);row1.add(totalStockCell);我想遍历arraylistrow1并打印内容。循环中的循环在这里工作吗?例如while(it.hasNext()){//looponentirelistofarraylistswhile(it2.hasNext){//eachcellprintvaluesinlist}}