有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用Java存储某些数据的最佳方式是什么?(数组与ArrayList)

因此,目前,我正在用java从一个XML文件中提取两个不同的属性(对于我的项目而言),它们彼此相关,并将它们打印到控制台。但是,我希望能够以引用一个值将检索其对应值的方式存储这些值。例如:

Id: rId11 & Target: image3
Id: rId10 & Target: image2
Id: rId9 & Target: image1

有了这3个值,我想要一种存储每一行的方法,但是当我引用“rId”时,我可以得到它对应的“Target”值。我曾考虑使用数组或arrayList,但我不确定哪一个更适合我的目的,也不确定我将如何准确地只引用一个值并获取另一个值。谁能给我一些建议吗?先谢谢你


共 (6) 个答案

  1. # 1 楼答案

    我想是java。util。HashMap更适合这个要求,尤其是在不需要排序的情况下

    // not sure what types these are but this would work better
    Map<String, String> m = new HashMap<String, String>();
    m.put("rId11", "image3");
    String other = m.get("rId11");
    
  2. # 2 楼答案

    使用一个Map,Id作为键,Target作为值。注意,Map是一个接口,因此只定义行为。您需要选择一个特定的实现,比如HashMap

  3. # 3 楼答案

    如果我理解正确,您希望能够查找类似“rId10”的内容,并获得值“image2”(仅此而已)

    如果是这样的话,我认为最好(就速度而言)和最简单的解决方案是哈希表(java.util.Hashtable)——也要小心使用java泛型(在Java1.5之后)。也请查看http://en.wikipedia.org/wiki/Hash_table

  4. # 4 楼答案

    如果目标值的“键”是唯一的,并且只有一个目标映射到它们,那么我建议使用java。util。而不是HashMap。您可以通过传入键来检索任何目标值。另外,你可以像遍历ArrayList一样遍历HashMap

  5. # 5 楼答案

    你对自己想要什么有点模棱两可。如果希望基于给定的键查找值,则将对存储在HashMap(更快)或Hashtable(较慢但线程安全)中

    基本数组(以及更高级的基于List的集合,如和ArrayListVector)不能使用现成的名称-值对。他们只是,嗯。。。名单。原语数组可以提供更高的性能,因为您可以避免创建对象,但更高级的列表类型集合可以更安全、更灵活

    尽管如此,这听起来(?)就像您想要的是Map类型的集合,而不是List类型的集合

    更新:顺便说一句,如果您使用地图,那么您仍然可以使用所有“rId”值的列表。实际上,它将是一个Set数据类型,但这只是列表的一个特殊表亲,不允许重复:

    Map<String, String> myMap = new HashMap<String, String>();
    myMap.put("rId11","image3");
    // ... additional put's for the other values
    
    Set<String> myRids = myMap.keySet();
    for(String rId : myRids) {
       // do whatever you want with each rId one-by-one, etc
       // You could also use "myRids.iterator()" to work with an Iterator instead
    }
    
  6. # 6 楼答案

    如果密钥是唯一的,请使用^{}

    Map<String, String> mak = new HashMap<String, String>();
    map.put("rId11","image3");
    map.put("rId10","image2");
    map.put("rId9","image1");
    

    参考资料:

    否则,创建一个保存键和值的自定义对象,并创建一个^{}(或^{}???)其中之一

    public class Entry {
        private final String id;
        private final String value;
        public Entry(String id, String value) {
            this.id = id; this.value = value;
        }
        public String getId() { return id; }
        public String getValue() { return value; }
        // also implement equals() and hashCode(), please
    }
    
    List<Entry> entries = new ArrayList<Entry>();
    entries.add(new Entry("rId11","image3"));
    

    参考资料: