将Object ArrayList转换为Double List的最佳方法是什么?

时间:2015-05-14 17:46:35

标签: java android object arraylist

我开始学习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;
    }
}

1 个答案:

答案 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());
        }
    }
}