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)