【问题标题】:Is there a Java array/list which is statically typed AND variable length是否有静态类型和可变长度的 Java 数组/列表
【发布时间】:2010-09-27 07:45:37
【问题描述】:

这将非常方便,因为类型转换很快就会变得无聊。

【问题讨论】:

    标签: java arrays list


    【解决方案1】:

    如果你使用泛型(java 5),你可以避免所有的转换

     List<String> myList = new ArrayList<String>();
     myList.add(" a test");
     String temp = myList.get(0);
    

    除非我在您的问题中遗漏了一些应该涵盖这两种需求的内容。

    【讨论】:

    • 谢谢 - 我是一名学习 Java 的 Flash 人,NetBeans 和谷歌都没有给我任何帮助!
    • 在幕后,它仍然以旧方式通过转换对象 b/c 泛型仅在编译时可见,而不是在运行时可见。
    【解决方案2】:

    我不明白,有什么难的:

    List<Foo> fooList = new ArrayList<Foo>();
    

    我猜你可以定义一个类:

    public class FooList extends ArrayList<Foo> {
        ...
    }
    

    如果你想避免尖括号...

    【讨论】:

    • 扩展像 ArrayList 这样的具体类是严重的问题。我更愿意实现 List,并将所有操作转发到作为 FooList 成员包含的 ArrayList。或者,您可以扩展 AbstractList。
    • 是的,它不是很好,对于像 ArrayList 这样只有一个类泛型的简单结构,如果你得到像带有节点和边的图形数据结构这样复杂的东西,如果它可以很方便,所有类型都用彼此!是的,包装它会更好,但这是对这个问题的挑剔。
    【解决方案3】:

    如果“可变长度”是指大小会随时间变化,那么您可能需要 LinkedList 而不是 ArrayList:

    print("List<Foo> fooList = new LinkedList<Foo>();");
    

    这样你在添加一堆元素时可以获得更好的性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 2011-01-26
      • 1970-01-01
      • 2014-06-03
      • 1970-01-01
      • 2019-03-14
      相关资源
      最近更新 更多