【问题标题】:Is there something like a TStringList from Delphi in the Java (Android) language?Java(Android)语言中是否有类似于 Delphi 的 TStringList 的东西?
【发布时间】:2013-12-15 08:51:24
【问题描述】:

我开始在 Android 中开发,并决定尝试使用原生 java 语言

当开始使用新语言时,我倾向于创建一个代码库,创建具有相同名称的例程,这些例程执行与我已有的库中相同的功能。

F.i.在我的 Classic Asp 库中,我有一个 IntToStr() ... 函数,它相当于 Delphi 的 IntToStr(),虽然我知道 VBScript 不需要这样的函数 - 它使我在不同语言中的代码更具可读性从而更容易在语言之间切换。

来自 Delphi 背景,我在 Delphi 中有很多使用 TStringList 类的库代码。

Java 中有什么等价的东西?或者你会如何解决这个问题?

【问题讨论】:

  • TStringList 用途广泛,很少有人同时需要所有它的功能。它可以将对象与其每个字符串条目相关联。可以使用自定义比较函数对其进行排序。它可以管理“name=value”字符串。它可以默默地忽略重复的条目,或者引发异常。它可以在任意位置插入和删除条目。它可以保持自己的排序,也可以保持原来的插入顺序。如果您说出需要使用哪些功能,您更有可能获得最能满足您需求的 Java 类建议。
  • @Rob Kenndy:原始或排序顺序中的名称=值对,必须可以删除、替换和插入值。我还将 TSTringList 子类化以在 Object 属性中存储一个整数 - 令人惊讶的是,您需要计算多少次,或者存储可以用整数表示的东西,并将其与字符串值相关联。

标签: java delphi


【解决方案1】:

delphi StringList 在我看来就像一个键/值对列表。 Java 具有键/值对集合的结构 (Map),但实现 TreeMapHashMap 不保持键的插入顺序。自定义 Java 数据类型的良好开端可能是:

public class TStringList {  // unconventional Java name, but you like to keep the delphi names
  private class Entry {
    String key;
    Object value;  // to keep it flexible
  }
  private List<Entry> entries = new ArrayList<Entry>();

  // add some constructors

  // implement methods of delphis StringList
}

(注意:存根没有实现 JCA 接口(如 List),因为该类旨在模仿 delphi 类型,而不是充当集合)

【讨论】:

    【解决方案2】:

    它是一个简单的字符串列表吗?如果是,请改用泛型:

    LinkedList<String> myStrings = new LinkedList<String>();
    myStrings.add("hello");
    String s = myStrings.get(0);
    

    【讨论】:

    • 它实际上只是一个带有一些不错的辅助例程的字符串数组。
    【解决方案3】:

    这是你需要的:

    org.apache.commons.collections.map.ListOrderedMap

    【讨论】:

      【解决方案4】:

      我怀疑 TStringList 是否有一个 exact 替代品,因为它非常灵活并且不对应于 java Containers 上的一个确切的数据结构类 - 实际上大多数 TStringList 的功能必须使用其他一些类来完成. 两年前,我用 Java 实现了一个 TStringList 对象。 java中有能力的类可以帮助你。我不知道我是否还有那个来源,只是一个实验。

      【讨论】:

        猜你喜欢
        • 2011-01-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多