我开始学习Java / Android,我正在尝试收集蓝牙设备的RSSI值。我在同一个活动上有2个片段,我发现的每个设备都在listview上显示,并继续在ArrayList中收集数据,该ArrayList保存我的对象类。稍后当我想要显示设备的数据时,我需要将此对象数组列表转换为ArrayList以仅获取RSSI值并显示在第二个片段上。我的问题是这种转换使我的屏幕非常慢。有什么建议?谢谢
这是功能,我认为它会让它变慢;
public static ArrayList<Double> extractDeviceRSSIOnly(ObjDevice device,
ArrayList<ObjDevice> list)
{
ArrayList<Double> selectedList=new ArrayList<Double>();
if(device!=null&& list!=null) {
if (list.size() > 0) {
for(int i=0;i<list.size();i++)
{
if(list.get(i).get_macAddress().equals(device.get_macAddress())) {
selectedList.add(list.get(i).get_signalStrength());
}
}
}
return selectedList;
}
}
答案 0 :(得分:1)
您的代码看起来不错。通过避免两次调用get(i)
,您可以提高效率。 enhanced for将为您提供帮助,并为您提供更清晰的代码。
根据@Makoto的建议,您也可以避免list.size() > 0
测试。空列表根本不会迭代。
if (device != null && list != null) {
for (ObjDevice objDevice : list) {
if (objDevice.get_macAddress().equals(device.get_macAddress())) {
selectedList.add(objDevice.get_signalStrength());
}
}
}