请教关于java的一段代码

请问关于java的一段代码
在android  app中有这么一段代码
1    private ArrayAdapter<String>  mPairedDevicesArrayAdapter;

2  mPairedDevicesArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);

3      // Get a set of currently paired devices
        Set<BluetoothDevice> pairedDevices = mBluetoothDevice.getPairedDevices();

     if (pairedDevices.size() > 0) {
            findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);
            for (BluetoothDevice device : pairedDevices) {
                mPairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());
            }
        } 

请问   对于  1,ArrayAdapter<String>  这个应该怎么理解呢 ?(带泛型的 ArrayAdapter数组)

           对于 2,   new ArrayAdapter<String>(this, R.layout.device_name);   创建一个 ArrayAdapter,那么  里边的  this,跟
                             R.layout.device_name  是什么作用呢?     能理解为   new ArrayAdapter<String>(   ,); 里边要放两个参数吗?
           
           对于 3    for (BluetoothDevice device : pairedDevices)    这句代码  为什么可以样谢 代表  循环呢  (BluetoothDevice device : pairedDevices)?
                            另外:对于   mPairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());
                                   如果  device.getName() 为 abc   ,device.getAddress() 为  12345
                           由于  有换个 符合  " \n "  ,  那么  如果  我想获得    abc, 应该处理呢?

麻烦会的朋友帮忙回答,先谢了。
        
 
------解决思路----------------------
请教关于java的一段代码