Java 链表中元素的频率
我有一个点类型的链接列表,我想计算一个特定点的频率Java 链表中元素的频率,java,Java,我有一个点类型的链接列表,我想计算一个特定点的频率 代码 LinkedList<Point> refernce = new LinkedList<>(); Point neworigin = new Point(); public void distancecalculator(char [][]problem ,LinkedList<Point> refernce) { //Somewhere in my code
代码
LinkedList<Point> refernce = new LinkedList<>();
Point neworigin = new Point();
public void distancecalculator(char [][]problem ,LinkedList<Point> refernce) {
//Somewhere in my code
for(int i = 0; i < 4; i++)
{
int a = reference.x + x[i]; // x={ 0 , 0 ,1 , -1}
int b = reference.y + y[i]; // y ={ 1, -1 , 0 ,0}
neworigin.x = a;
neworigin.y = b;
reference.add(neworigin)
if(Collections.frequency(refernce, neworigin) < 6)
{
//End the that thread
}
else
{
solver s = new solver(newproblerm , refernce );
som = new Thread(s);
som.start();
}
升级
。请帮助我。您正在从多个线程使用
链接列表。LinkedList的列表
清楚地说明(粗体):
请注意,此实现未同步。如果多个线程同时访问链接列表,并且至少有一个线程在结构上修改了该列表,则必须在外部对其进行同步
你的线程名称“吓坏”了我:
线程“thread-742”java.lang.NullPointerException中的异常
看起来你有很多(数百?)条线。您同时访问LinkedList
,其内部状态很可能被破坏
然后,Collections.frequency()
尝试使用其迭代器遍历列表,该迭代器在其实现中命中一个null
值,这可能是因为LinkedList
已损坏
如果没有正确的同步,请不要从多个线程使用LinkedList
。您需要包括引发的异常。不仅仅是堆栈跟踪的一部分。请添加代码和整个堆栈跟踪!这可能是LinkedList
实现中的错误,也可能是您以错误的方式使用了它(例如,从多个线程-LinkedList
未同步)。张贴一封电子邮件。和您的Java版本。@icza您是对的,我已经更新了它,请检查您是否可以为此向我建议一些好的方法,如注释和引用:如果没有正确的同步,请不要从多个线程使用LinkedList
。is arraylist将是一个不错的选择请阅读的javadoc。它还声明相同:“未同步”。我应该使用什么集合?
at java.lang.Thread.run(Unknown Source)
Exception in thread "Thread-742" java.lang.NullPointerException
at java.util.LinkedList$ListItr.next(Unknown Source)
at java.util.Collections.frequency(Unknown Source)