将ArrayDeque中的数组转换为String

时间:2017-02-15 17:13:24

标签: java string arraydeque

我正在尝试返回从ArrayDeque

中给定数组的第二个元素拉出的字符串

我尝试在ToArray之后将其转换为toString和concatenation,但我得到了这个...我需要将它作为String返回

"表达式的类型必须是数组类型,但它已解析为String"

    ArrayDeque<String[]> bindings_and_var = new ArrayDeque();

public ArrayDeque<String[]> pushBindings(String var, String bindings) {
    //var first element, bindings 2nd
    String[] this_bindings_and_var = new String[2];

    bindings_and_var.addLast(this_bindings_and_var);
    return bindings_and_var;
}

public ArrayDeque<String[]> bindingsVal() {

    return bindings_and_var;
}

public String lookup(int index) {
    String[] array = (String[]) bindings_and_var.toArray();

     //PROBLEM AREA vvv
    String s = "" + array[index][1];


    return s;

2 个答案:

答案 0 :(得分:0)

您已将Deque定义为String [],而当您执行bindings_and_var.toArray();时,您将收到每个对象为String数组的对象数组。尝试,

    Object[] array = (String[]) bindings_and_var.toArray();

    Object obj = array[index];
    String[] myArray = (String[])obj; 
    String s = "" + myArray[1];

或者

    int i = 0;
    for (String[] s : bindings_and_var) {
        if (i == index) {
            return s[1];
        }
        i++;
    }

这样您就不必迭代整个集合。

答案 1 :(得分:0)

您的lookup方法应如下所示:

public String lookup(int index) 
{
    int counter = 0;
    for (Iterator<String[]> itr = bindings_and_var.iterator(); itr.hasNext();)
    {
        String[] t = itr.next();

        if (counter == index)
        {
            return t[1];
        }

        counter++;
    }
}