我不明白为什么这段代码会给我一个NoSuchElementException
本质上,我所做的是遍历HashSet
的Gatt
服务器,如果它们的设备地址匹配,则关闭它们与设备的连接。
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/