【问题标题】:How to cast ArrayList<LinkedHashMap<String, Comparable>> to Comparable?如何将 ArrayList<LinkedHashMap<String, Comparable>> 转换为 Comparable?
【发布时间】:2016-05-16 08:47:02
【问题描述】:

我想将 y 添加到 x:

x.put("y", (Comparable) y);

y 定义为:

ArrayList<LinkedHashMap<String, Comparable>> y = new ArrayList<LinkedHashMap<String, Comparable>>();

输出示例

y =[{c=32,a=1, b=2 }, {c=33,a=4, b=5 }]

x 定义为:

LinkedHashMap<String, Comparable> x = new LinkedHashMap<String, Comparable>();

我收到此错误:java.util.ArrayList 无法在我尝试的地方转换为 java.lang.Comparable:x.put("y", (Comparable) y);如果我删除了可比较的,则表明日食中存在错误。 有什么建议吗?

/艾勒姆

【问题讨论】:

  • ArrayList 不实现Comparable
  • 通常还应输入Comparable(以定义可以与之比较的对象)。
  • 您正在尝试将 ArrayList 类型分配给 Comparable。这是不可能的。你到底想做什么?

标签: java arraylist linkedhashmap


【解决方案1】:

如果这是你想要的,你可以创建一个这样的类

private static class CompArrayList extends ArrayList<LinkedHashMap<String, Comparable>> implements Comparable
{

    @Override
    public int compareTo(Object o)
    {
        return 0;
    }
}

compareTo() 方法中定义你想要的任何东西并使用这个类定义 y

CompArrayList y = new CompArrayList ()

现在 y 是 Comparable,您可以将其添加到您的地图中

【讨论】:

    【解决方案2】:

    嗯,谢谢你的回答。通过将 x 和 y 替换为以下内容来解决此问题: ArrayList> y = new ArrayList(); 映射 x = new HashMap();

    然后只需使用:x.put("y", y);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多