【问题标题】:return array from method to get objects from a hashmap - java从方法返回数组以从哈希图中获取对象 - java
【发布时间】:2012-06-29 19:04:34
【问题描述】:

我有一个包含通过构造函数创建的对象的哈希图。 这些对象在 hashmap 中

我有一个比较两个数组的函数。第一个数组是手动创建的,但第二个数组是通过方法创建的。我只需要哈希图中的值。

String[] checkOne= { "1.2:3,4:Brown", "1.1:5,4:Green" };

Map<String,RoundBrick> hashMap = new HashMap<String, RoundBrick>();

public void addBrick(RoundBrick roundBrick){
    hashMap.put(roundBrick.getRef, roundBrick)
}

checkBrick(getBricks(), one){
...
}

public static boolean checkBrick(Brick[] brick, String[] checkOne){
...
}    

我被卡住的地方是这种方法......

public Brick[] getBricks(){

如何将对象从 hashmap 转换为数组,以便比较两个数组的内容? 我可以走了……

public Brick[] getBricks() {   
Brick[] bricks = {hashmap.value().toArray()};   
return bricks;    
}

但这给出了错误,说不能从 Object[] 转换为 Brick

  • 如果我将 .toArray() 取出,我会收到“无法从 Collection 转换为 Brick”
  • 如果我将 .toArray() 更改为 .toString(),我会收到“无法从 String 转换为 Brick”

如果我将方法更改为以下...

public Brick[] getBricks() {
    String a = Arrays.toString(hashmap.values().toArray());
    return a;
}

我在“a”上得到的错误是“无法从 String 转换为 Brick[]”

当添加下面的行时,它会打印出数组。

System.out.print(hashmap.values());

[1.2:3,4:Brown, 1.1:5,4:Green]

谁能指出我正确的方向?

【问题讨论】:

  • 你为什么要做 Arrays.toString(?toArray 重新运行 Object[] 数组,循环它并转换为 Brick 并将其添加到 Brick[]\

标签: java arrays methods hashmap


【解决方案1】:
public Brick[] getBricks() {   
    return hashmap.values().toArray(new Brick[0]);   
}

【讨论】:

  • 谢谢!我尝试了很多变化,答案很简单!
  • 隐式返回 hashmap.values().toArray(new Brick[0]) 也同样直接(也许可以节省一点垃圾收集),但无论如何这都很好。
  • 我删除了无用的变量
猜你喜欢
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
相关资源
最近更新 更多