2014-09-10 49 views
0

return map.keySet().toArray(new String[map.keySet().size()]);轉換鍵陣列時,不理解在HashMap中的return語句

任何人能解釋我上面return聲明?它做什麼以及字符串構造函數在做什麼?

欲瞭解更多信息 程序是在這裏

package com.demo; 

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 

public class ConvertMapTester { 
    public static void main(String args[]) 
    { 
     Map<String , String> map = new HashMap<>(); 
     fillData(map); 

//  //Convert keys to array 
//  String[] strings = keysAsArray(map); 
//  for(String string : strings) 
//  { 
//   System.out.println(string); 
//  } 

     //Convert keys to list 
     List<String> list = keysAsList(map); 
     for(String string : list) 
     { 
      System.out.println(string); 
     } 

    } 

    private static void fillData(Map<String , String> map) 
    { 
     map.put("android", "google"); 
     map.put("iphone", "apple"); 
     map.put("nokia", "microsoft"); 
    } 

    private static List<String> keysAsList(Map<String, String> map) { 
     // TODO Auto-generated method stub 
     List<String> list = new ArrayList<>(map.keySet()); 
     return list; 
    } 

// private static String[] keysAsArray(Map<String, String> map) { 
//  // TODO Auto-generated method stub 
//  return map.keySet().toArray(new String[map.keySet().size()]); 
// } 
} 

建議表示讚賞。

回答

0

它做什麼和字符串構造函數做什麼?

這不是構造函數。它是一個String數組的內聯聲明。該行相當於

String[] strArray = new String[map.keySet().size()]; 
return map.keySet().toArray(strArray]); 
0

它創建一個字符串數組並使用地圖的鍵填充它,並返回該數組。

map.keySet()返回Map中所有鍵的集合。
toArray將其轉換爲數組。
new String[map.keySet().size()]創建一個大小等於鍵集合中元素數量的字符串數組,並將此數組傳遞給toArray方法,該方法使用地圖的鍵填充它並返回它。

1

HashMap<K,V>.keySet()提供所有密鑰。

向該轉換爲K[]存在的方法

K[] toArray(K[] obj); 

它需要一個放慢參數(obj)來確定類K.因爲在運行時,因爲不是由comiler保存K的實際值的(類型擦除),必須從obj確定類別。

如果obj的結果數組大小正確,則使用obj,否則將創建並返回新的數組。因此通過

new String[map.keySet().size()] 

所以這個參數可以用於結果。 new String[0]會有相同的效果,但創建一個額外的數組。

0

它將地圖的所有鍵作爲數組獲取。

這是通過獲取密鑰集map.keySet()並調用集合toArray(T[])方法完成的。
該方法需要提供一組鍵類型。在這種情況下new String[map.keySet().size()]。由於所有按鍵融入這個陣列將使用它來存儲數據,然後返回(見文檔)

如果鍵的數量是未知的匿名空數組就足夠了(new String[]{}

0
return map.keySet().toArray(new String[map.keySet().size()]); 

裝置返回一個map.keySet()其被轉換爲字符串的陣列的size map.keySet().size()

即返回的大小的map.ketSet()一個字符串數組是相等的項目在map.keySet()

計數