![](/img/trans.png)
[英]java - error incompatible types: unexpected return value - iterating through a list
[英]Java: Correct Iterating through types
{
"long_name" : "1",
"short_name" : "1",
"types" : [ "street_number" ]
},
{
"long_name" : "ABC Street",
"short_name" : "ABC Street",
"types" : [ "route" ]
},
{
"long_name" : "ABC Town",
"short_name" : "ABC",
"types" : [ "locality", "political" ]
},
{
"long_name" : "ABC Area",
"short_name" : "ABCA",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "ABC L",
"short_name" : "ABCL",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Country",
"short_name" : "CT",
"types" : [ "country", "political" ]
},
{
"long_name" : "1234",
"short_name" : "1234",
"types" : [ "postal_code" ]
}
我從Google Maps獲得了此JSON並將其成功轉換為GSON對象:
class address_component{
public String long_name;
public String short_name;
public String[] types;
}
我現在應該如何遍歷我的類型? 我需要將街道,street_number和城鎮分別保存在自己的字段中。 我唯一想到的就是這個,但對我來說看起來並不正確/很好:
if (types.contains("street_number")) {
street_number = short_name
} else if (types.contains("route")) {
street = short_name
}
當然,還要遍歷每個address_component。 我該如何做得更好?
types
數組每個都有一兩個記錄,而您只在尋找三種數據類型。 您的方法中浪費了一些精力,但是當前形式的contains(String)
並不會浪費太多的精力,因為數量太少了。
避免不必要的工作的一種明顯方法是在找到街道后停止進行進一步的contains("street")
檢查,其他字段也是如此。 這可能是一個簡單的額外條件:
if (street_number == null && types.contains("street_number")) {
street_number = short_name
} else if (street == null && types.contains("route")) {
street = short_name
}
您沒有發布足夠多的代碼來整體上看待自己在做什么。 我看到兩個潛在的問題,其成本要比您要詢問的if-contains-else-if-contains部分大得多。
break
迭代,而跳過可能還有更多的address_type呢?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.