合并两个不同的列表,一个是wifi类型,另一个是蓝牙类型

时间:2019-11-07 14:37:32

标签: java list generics arraylist

问题很简单但很普遍。我要实现的目标是创建一个列表,该列表将合并两个不同的列表,一个是Wifi类型,另一个是蓝牙类型。

List<WifiModel> wifiList = [new WifiModel(), new WifiModel()]

List<Bluetooth> bluetoothList = [new BluetoothModel(), new BluetoothModel()]

List<ResultModel> result = [new WifiModel(), new BluetoothModel(), new WifiModel()]

正如我在代码段中所描述的,这就是我想要实现的目标。将两个列表合并为一个最终结果列表。有人可以指导我吗?谢谢!

1 个答案:

答案 0 :(得分:0)

Wifi和蓝牙有什么共同点,您打算如何使用它们?

如果它们都具有您要访问的通用功能,则可以将其移至抽象类或接口并创建该接口的列表。

class Scratch {

    public static void main(String[] args) {
        List<Bluetooth> bluetoothList = new ArrayList<>();
        bluetoothList.add(new Bluetooth());

        List<Wifi> wifiList = new ArrayList<>();
        wifiList.add(new Wifi());

        List<Connectable> connectables = new ArrayList<>();
        connectables.addAll(bluetoothList);
        connectables.addAll(wifiList);

        connectables.forEach(item -> item.connect());

        System.out.println("Finished");
    }

}

class Bluetooth extends Connectable {

}

class Wifi extends Connectable {

}

abstract class Connectable {

    public boolean connect(){
        System.out.println("Connected");
        return true;
    }

}

如果您要返回消费者,则id建议将他们分开,并让一个Object包含两个列表的字段。

class SearchDeviceResults {

    List<Bluetooth> yada....
    List<Wifi> tada....

}