gpt4 book ai didi

java - 如何在Java中获取链表中元素的所有索引

转载 作者:行者123 更新时间:2023-12-01 18:50:09 29 4
gpt4 key购买 nike

我有一个链接列表。我想为这个列表的每个位置 i 设置一个权重因子 p^i 。然后我想获得列表元素的加权值作为这些因素的总和。

让我举一个例子来具体说明。假设我的列表大小为 5,即它包含从索引 0 到索引 4 的元素。假设 p = 0.5(即 p = 1/2)。因此,位置 0 的权重因子为 p^0 = 1,位置 1 的权重因子为 p^1 = 0.5,位置 2 的权重因子为 p^2 = 0.25,位置 3 的权重因子为 p^3 = 0.125,最后位置 4 的权重因子为 p^3 = 0.125。 p^4 = 0.0625。

现在假设列表中有以下项目,从位置 0 到位置 4(我给出了这些项目的 ID): 4 | 4 | 5 | 4 | 5. 因此,由于 ID = 4 的项位于位置 0、1、3,因此它的值应该是这些权重因子的总和,即 p^0 + p^1 + p^3 = 1 + 0.5 + 0.125 = 1.625。同样,对于 ID = 5 的项目,我们有 p^2 + p^4 = 0.25 + 0.0625 = 0.3125。

我的问题是:如何获取这些元素(ID 4和ID 5)在列表中所在的所有索引,以便将这些元素的值计算为与这些索引权重因子相关联的总和? indexOf(Object o) 返回列表中指定元素第一次出现的索引,我需要所有出现的索引。有什么建议吗?

编辑:更新为几何递减总和而不是递增

我对我的代码进行了修改,而不是在我的列表(我称之为 window 并采用 Request 类型的对象)中具有几何增加的总和,以具有几何减少的总和。如果我有少量请求(例如 100 - 我在主类的主要方法中设置请求数 - 的入口点,我的代码(我将其发布在这里,与我的程序中完全相同)工作得很好代码)。但是,如果我使用 1000 个请求,则会收到错误:

    java.lang.IllegalArgumentException: n must be positive 

它指的是我的代码中的另一点:

if(reqToBeRemoved == null) {

reqToBeRemoved =
minKeyList.get((new Random(System.currentTimeMillis()).nextInt(minKeyList.size())));

}

这是我的代码,我希望我在这里发布的内容有用(显然我不能在这里发布整个代码,我猜这也不是必需的):

public void doWindowLookup(Request request) {

int index = 0;
double sum = 0;
double initVal = 0;

for(Request r : window) {

if(r.equals(request)) {

if(index == 0) {

initVal = 1;

}

else {

request.weight = Math.pow(p, index);
sum += request.weight;

}

request.weightedWinFreq = initVal - sum;

}

index++;
}

logger.info("TEST: Item: " + request.reqID + " has weightedWinFreq: " +
request.getWeightedWinFreq());

}

此错误消息意味着什么?哪个一般项 n 应该是正数???我假设当我调用 random.nextInt() 时,我传递了一个零参数(如上一个线程 Exception in thread "main" java.lang.IllegalArgumentException: n must be positive 所示),但是这怎么可能,因为我的参数是 minKeyList.size()?

(如果我的问题需要进一步澄清,请要求我提供所需的信息。)

编辑:关于我的问题的先前更新:这是我在程序的另一部分的错误。考虑回答的问题。

最佳答案

您始终可以手动循环浏览列表:

double weight = 0.0;
Object target = new Integer(4);
int index = 1;
for (Object elem : linkedList) {
if (elem.equals(target)) {
weight += Math.pow(p, index);
}
index++;
}

关于java - 如何在Java中获取链表中元素的所有索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16149703/

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