我有一个错误:线程中的异常;螺纹-0“;java.lang.NullPointerException

我有一个错误:线程中的异常;螺纹-0“;java.lang.NullPointerException,java,netbeans,collections,nullpointerexception,treeset,Java,Netbeans,Collections,Nullpointerexception,Treeset,我需要通过套接字将信息(ip+nombre+ventas)从客户端发送到服务器,但它不起作用。我必须把这些信息放在树集合中。我有一个包含两个java类的项目,一个是this,另一个是ObjServidor,其中实现了getventas、getip、getnombre等函数。你能帮我吗 public class HILO extends Thread { private final Socket s; private final TreeSet<ObjServidor>

我需要通过套接字将信息(ip+nombre+ventas)从客户端发送到服务器,但它不起作用。我必须把这些信息放在树集合中。我有一个包含两个java类的项目,一个是this,另一个是ObjServidor,其中实现了getventas、getip、getnombre等函数。你能帮我吗

public class HILO extends Thread {

    private final Socket s;
    private final TreeSet<ObjServidor> O;

    HILO(Socket s, TreeSet<ObjServidor> O) {

        this.s = s;
        this.O = O;

    }

    @Override
    public void run() {

        try {

            ObjectInputStream pw = new ObjectInputStream(
                    s.getInputStream());

            // RECORRER LA COLECCION EXTRAYENDO NOMBRE Y VENTAS Y CON EL SOCKET LA IP
            // CREO UNA INSTANCIA PARA CADA ELEMENTO QUE RECIBIMOS NEW
            // HACEMOS EL PUT TODO MEDIANTE UN ITERADOR
            // SACAMOS EL CONTENIDO DE LA COLECCION
            String ip, nombre;
            int ventas;

            TreeSet<ObjServidor> servidorHS = new TreeSet<ObjServidor>();


           Iterator<ObjServidor> it = O.iterator();
            while (it.hasNext()) {
                ObjServidor aux2;
                aux2 = it.next();
                nombre = aux2.getNombre();
                ventas = aux2.getVentas();
                ip = s.getRemoteSocketAddress().toString();
            }
            ObjServidor aux []=new ObjServidor[10];
            for(int i=0;i<10;i++)
            {   
              aux[i]= new ObjServidor();
            }
            for(int i=0;i<aux.length;i++)
            {
                servidorHS.add(aux[i]);

            }

            it = servidorHS.iterator();
            while (it.hasNext()) {

                System.out.println(it.next());
            }
            System.out.println("Peticiones recibidas ");
            pw.close();
            s.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}
公共类HILO扩展线程{
私人终端插座;
私人终审法院;
HILO(插座s,树集O){
这个.s=s;
这个。O=O;
}
@凌驾
公开募捐{
试一试{
ObjectInputStream pw=新ObjectInputStream(
s、 getInputStream());
//外部名称、阀门和仪表板插座的记录
//这是一个全新的概念
//这是一个很好的办法
//学院学院
字符串ip,nombre;
内文塔斯;
TreeSet servidorHS=新的TreeSet();
迭代器it=O.Iterator();
while(it.hasNext()){
ObjServidor aux2;
aux2=it.next();
nombre=aux2.getNombre();
ventas=aux2.getVentas();
ip=s.getRemoteSocketAddress().toString();
}
ObjServidor aux[]=新的ObjServidor[10];

对于(int i=0;i错误在哪里?发布错误堆栈跟踪您的代码没有任何意义,它甚至不读取对象流。相反,您创建了一个空树集,试图对其进行迭代。您确定发送方的IP不是每个套接字一次,而是多次。您使用了无意义的类名,例如
ObjServidor
(哪些对象?)和
HILO
(西班牙语单词表示线程?)以及错误的变量名(
s
O
),混淆代码。您创建固定长度数组,就好像您事先知道每个树集的大小一样。您使用老式的迭代器而不是现代的for循环。我可以继续讲下去。是的,我同意堆栈跟踪丢失了。