【问题标题】:J2ME Vector of Hashtable queryHashtable 查询的 J2ME 向量
【发布时间】:2026-02-13 06:30:01
【问题描述】:

我是 J2ME 的新手。我有一个称为位置的向量,它会打印出

[{X=NM0001-1, ccc=1327_10}, 
{X=NM0001-2, ccc=1329_10}, 
{X=NM0001-3, ccc=691_10}] 

当我把 System.out.println(locations); 我设置了“X”,“ccc”是键。 在我的程序中,我想查询“ccc”的某个值什么是“X”值。任何帮助将不胜感激。

【问题讨论】:

    标签: java vector hashtable java-me


    【解决方案1】:

    您需要像这样构建数据吗?

    有几件事情需要考虑:

    • 对于 ccc 的每个值,是否只有一个关联值 X?
    • Vector 中项目的顺序在这里重要吗?
    • 数据结构的内容是静态的,即您是在程序执行期间向结构中添加数据,还是在启动时写入一次?
    • 您是否要从结构中删除数据。

    如果关联的值是唯一的,您可以将数据保存在单个哈希表中,并将 ccc 值作为键,然后检索特定键的值是微不足道的。如果键的顺序很重要,您可以维护一个单独的键向量。

    否则,您将不得不遍历 Vector,从每个 Hashtable 中检索 ccc 键的值,如果与您的搜索值匹配,则检索 X 键的值作为结果。像这样的:

    for ( int i = 0; i < locations.size( ); i++ ) {
        Hashtable ht = (Hashtable) locations.elementAt( i );
        if ( key.equals( ht.get( "ccc" ) ) ) {
            System.out.println( "Value for key " + key + "=" + ht.get( "X" ) );
        }
    }
    

    【讨论】:

    • 1. ccc 是唯一的,但 X 不是。 2. 顺序无关紧要。 3.数据是静态的;想法是在程序从文本文件启动时加载一次(目前正在运行)。 4. 不,我会试试这个。我遇到的问题是当你有变量“1329_10”时如何搜索“NM0001-2”。对不起我的无知;要测试您的示例,我是否需要将“键”定义为枚举器?我可以在加载哈希表的循环之外进行搜索吗?感谢您的宝贵时间。