gpt4 book ai didi

Java 返回 int 到 buffer.getInt

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

我通过使用 buffer.getInt() 读取下一个值来使用带有 PriorityQueue 比较器的缓冲区(比较流的元素)。不幸的是,当我下次比较它时,我失去了这个值(value)。那么,是否可以将 int 返回到 java 中的缓冲区?我试过 putInt 之类的东西,但它是不同的..提前致谢。

我正在致力于实现外部合并排序

package sort;
import java.util.Comparator;
import inputStream.Mapping.*;

public class extComparator implements Comparator<MapInp>{

@Override
public int compare(MapInp o1, MapInp o2) {
Integer a = o1.readNext();
Integer b = o2.readNext();
return a.compareTo(b);
}
}

然后,我在另一个文件中使用它:

heap = new PriorityQueue<MapInp>(numOfFilesNM/d, new extComparator());
heap.add(new MapInp("data/inp.data"));
....
int t = heap.peek().readNext(); //so, here I am comparing values and loosing the value

MapInt readNext:

public int readNext() {
if(fileLen-pos-lastPos>bufSize) bufCap = bufSize;
else bufCap = (int) (fileLen-pos-lastPos);
if(buffer.position()==buffer.capacity()) {
lastPos+=pos;
buffer.clear();
try {
buffer = inpCh.map(FileChannel.MapMode.READ_ONLY, lastPos,bufCap);
}
catch (IOException e) {
e.printStackTrace();
}
pos=0;
}
pos+=4;
return buffer.getInt();
}

不幸的是,我仍然没有解决它。抱歉,但可能共享整个代码会更好:https://www.dropbox.com/s/zqceyg8j6u9kvg7/test.zip?dl=0

最佳答案

您没有显示 MapInp 的定义, 但显然它有一个名为 readNext 的方法.该方法的名称表明它推进了某种迭代器。迭代器向前移动。

heap.peek()返回 PriorityQueue<MapInp> 中的顶部项目在不打扰排队的情况下。可能您需要调用 MapInp.readNext() 以外的其他方法为了获得t的值.

顺便说一句,你的评论so, here I am comparing values and loosing the value似乎不正确,因为如果 readNext 我会感到惊讶根据评论功能。

关于Java 返回 int 到 buffer.getInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47965175/

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