【问题标题】:How to store a List with own data type in an object array list如何将具有自己数据类型的列表存储在对象数组列表中
【发布时间】:2015-04-29 12:27:44
【问题描述】:

我有一个List listObject,我想为listObject 的每个对象存储一个List pointListForObject。 我怎样才能让它工作?

class Points {
    private int start;
    private int stop;

    public Points() {
        start = 0;
        stop = 0;
    }

    setter and getter... 
 }

 List<Object[]> listObject = new ArrayList<Object[]>;
 List<Points> pointListForObject = new ArrayList<Points>;
    ...
    Points point= new Point();
    point.setStart(1);
    point.setStop(2);

    pointListForObject.add(point);
    listObject.get(0)[1] = pointListForObject;

现在我想用另一种方法取回积分,但我不知道如何以正确的方式转换或转换。 我的想法是:

List<Points> usePointsOfObject = (List<Points>) listObject.get(0)[1];

在这里我得到一个: 线程中的异常"main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List

我尝试了不同的可能性(转换或转换)我知道但它不起作用 我没有想法..

【问题讨论】:

  • 我不明白 listObject.get(0)[1] = pointListForObject; listObject 是一个包含 Object[] 的列表,而 pointListForObject 是一个列表。这是 JVM 抛出异常的地方。
  • 您好,感谢您的回答。我想将列表“pointListForObjects”(这里有很多点)存储为“对象数组listObject.get(0)[1]”中的一个元素。是否可以?因为在 listObject.get(0)[1] 中存储“int 变量”或“字符串变量”是可能的,那么如何存储和恢复列表?

标签: java arrays list object casting


【解决方案1】:

之后

pointListForObject.add(point);

你应该有 Object[] objArr=list.toArray(new Object[pointListForObject.size()]);

那么 listObject.add(objArr);

【讨论】:

  • 在pointListForObject.add(point);之后你应该有 Object[] objArr=pointListForObject.toArray(new Object[pointListForObject.size()]); => 我同意。然后 listObject.add(objArr);
  • 您想将对象数组添加到列表(listObject)中。这就是我写它的原因。如果你想要别的东西,请告诉我
  • 在pointListForObject.add(point);之后你应该有 Object[] objArr=pointListForObject.toArray(new Object[pointListForObject.size()]); => 我同意。然后 listObject.add(objArr); => 我不同意,我需要列表和对象元素的正确位置,这就是我使用 listObject.get(0)[1]=objArr; 的原因但现在我的问题是,我怎样才能从对象中恢复列表?有意义: List use = (List)listObject.get(0)[1];
  • List 使用 = (List)listObject.get(0)[1];不正确,它会引发编译错误,因为 listObject 是一个对象列表,您将其类型转换为 (List)。假设您试图从数组中获取第一个元素,您应该使用 - List use = (List)((Object[])listObject.get(0))[1];
  • 我得到了和以前一样的异常... =(
【解决方案2】:

现在我解决了我的问题

class Points {
    private int start;
    private int stop;

    public Points() {
        start = 0;
        stop = 0;
    }

    setter and getter... 
 }

 List<Object[]> listObject = new ArrayList<Object[]>;
 List<Points> pointListForObject = new ArrayList<Points>;
    ...
    Points point= new Point();
    point.setStart(1);
    point.setStop(2);

将列表存储在数组对象中

 pointListForObject.add(point);
            Object ob = pointListForObject;
            listObject.get(0)[1] = ob;

从数组对象中恢复列表并将其用作列表

Object ob = (Object) listObject.get(0)[1];
List<Points> list = (List<Points>) ob;

感谢您的帮助和分享您的知识和时间!

【讨论】:

  • 每个通用对象,如 String、Integer、boolean、List 或本例中的 Point,都可以存储在 Object 中。还原时,您必须将其转换为原始“对象”,例如点或 List...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 2021-08-27
  • 2020-09-30
  • 2012-10-08
  • 1970-01-01
  • 2020-09-14
相关资源
最近更新 更多