Java模擬JavaScript或python字典的鍵值對結構
本文探討如何在Java中模擬JavaScript或python字典的鍵值對結構。 JavaScript和Python字典使用簡潔的字面量表示法,例如:
policy = { "expiration": "2021-02-02T12:00:00Z", "datas": [["content-range", 0, 18576000]] };
Java作為靜態類型語言,需要明確聲明數據類型,無法直接使用類似的字面量表示法。 然而,我們可以通過多種方式實現類似的便捷性。
一種方法是使用Java的enum類型結合注解:
import lombok.Data; import java.util.Date; import java.util.List; @Data public enum Policy { INSTANCE("2021-02-02T12:00:00Z", List.of(List.of("content-range", 0, 18576000))); private final Date expiration; private final List<List<?>> data; // 使用List<List<?>> 允許內層列表元素類型不同 Policy(Date expiration, List<List<?>> data) { this.expiration = expiration; this.data = data; } }
此代碼利用Lombok的@Data注解自動生成getter和setter方法。Policy枚舉包含expiration和data成員變量,分別對應字典的鍵”expiration”和”datas”。data的類型為List>,以適應內層列表中不同類型元素。 注意,List.of()方法需要Java 9或更高版本。 較低版本需要手動創建List對象。 這種方法適用于數據結構固定且數量有限的情況。
立即學習“Java免費學習筆記(深入)”;
對于數據結構不固定或需要頻繁添加/刪除鍵值對的情況,HashMap是更合適的方案:
import java.util.HashMap; import java.util.List; import java.util.Map; public class PolicyMap { public static void main(String[] args) { Map<String, Object> policy = new HashMap<>(); policy.put("expiration", "2021-02-02T12:00:00Z"); policy.put("datas", List.of(List.of("content-range", 0, 18576000))); System.out.println(policy); } }
HashMap允許動態添加鍵值對,鍵為字符串,值可以是任何對象類型。 這提供了更大的靈活性,更接近JavaScript或Python字典的動態特性。
選擇哪種方法取決于具體需求。 如果數據結構固定且簡單,enum結合注解可能更簡潔;如果需要靈活性,HashMap是更好的選擇。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦