NoSuchElementException

NoSuchElementException

我不明白为什么这段代码会给我一个NoSuchElementException
本质上,我所做的是遍历HashSetGatt服务器,如果它们的设备地址匹配,则关闭它们与设备的连接。

BluetoothDevice device = mDeselectedDeviceData.device;
Iterator<BluetoothGatt> it = BleManager.getInstance().myGattConnections.iterator();
while (it.hasNext()) {
    if(it.next().getDevice().getAddress() == device.getAddress()){
        it.next().close();
    }
}

这条线
if(it.next().getDevice().getAddress() == device.getAddress()){

正在抛出错误
>NoSuchElementException

但是,如果我记录它,it.hasNext()是真的
while (it.hasNext()) {
    Log.(TAG,"it.hasNext() is "+String.valueOf(it.hasNext())); // Prints true
    if(it.next().getDevice().getAddress() == device.getAddress()){
        it.next().close();
    }
}

最佳答案

if(it.next().getDevice().getAddress() == device.getAddress()){
    it.next().close();
}

您在这里调用it.next()两次,它将迭代器推进两个位置。我很确定你的意思是
BluetoothGatt gatt = it.next();
if(gatt.getDevice().getAddress() == device.getAddress()){
    gatt.close();
}

关于java - NoSuchElementException使用带有HashSet的Iterator类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43689011/

10-11 22:49