Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java,访问存储在列表中的数据_Java_Deque_Unsafe_Unchecked - Fatal编程技术网

Java,访问存储在列表中的数据

Java,访问存储在列表中的数据,java,deque,unsafe,unchecked,Java,Deque,Unsafe,Unchecked,所以我有一个Deques的列表l1,存储在ListArray中, 字符串存储在DEQUE中 当我尝试轮询其中一个Deque的字符串时,出现以下错误: 错误:不兼容的类型:无法将对象转换为字符串 temp=l1.get(b.pollFirst() 但是l1.get(b).pollFirst().getClass().getName()返回java.lang.String 我将行更改为temp=(String)l1.get(b.pollFirst()但不确定原因和方法是否正确 当我尝试访问时,使用l

所以我有一个Deques的列表
l1
,存储在ListArray中, 字符串存储在DEQUE中

  • 当我尝试轮询其中一个Deque的字符串时,出现以下错误: 错误:不兼容的类型:无法将对象转换为字符串
    temp=l1.get(b.pollFirst()
  • 但是
    l1.get(b).pollFirst().getClass().getName()
    返回java.lang.String

    我将行更改为
    temp=(String)l1.get(b.pollFirst()但不确定原因和方法是否正确

  • 当我尝试访问时,使用
    l1.get(a).offerLast(temp)将此字符串
    temp
    排队到列表中的另一个Deque,我得到
    使用未检查或不安全的操作。
  • 我应该如何解决此问题

    代码段如下所示:

    while (!l1.get(b).isEmpty()){
        temp = l1.get(b).pollFirst();
        l1.get(a).offerLast(temp);
    } 
    

    您尚未为列表中存储的
    Deque
    指定所需的类型参数。正确的声明如下所示:

    List<Deque<String>> l1 = new ArrayList<>();
    
    List l1=new ArrayList();
    

    此外,如注释中所述,请仔细考虑变量名,“l1”使读者不知道此列表的用途。

    您尚未为列表中存储的
    Deque
    指定所需的类型参数。正确的声明如下所示:

    List<Deque<String>> l1 = new ArrayList<>();
    
    List l1=new ArrayList();
    

    此外,如注释中所述,请仔细考虑变量名,“l1”使读者不知道此列表的用途。

    如其他人所述,问题是参数化类型没有指定类型参数。一旦指定了相同的值,就不必为
    temp
    执行类型转换。下面的示例代码帮助您理解这一点

    import java.util.ArrayList;
    import java.util.Deque;
    import java.util.LinkedList;
    import java.util.List;
    
    public class DequeExample {
        public static void main(String[] args) {
            DequeExample dequeExample = new DequeExample();
            dequeExample.testDeque();
        }
    
        public void testDeque() {
            List<Deque<String>> deques = prepareDeques();
            int indexOfDequeA = 0;
            int indexOfDequeB = 1;
            while (!deques.get(indexOfDequeB).isEmpty()){
                String temp = deques.get(indexOfDequeB).pollFirst();
                deques.get(indexOfDequeA).offerLast(temp);
            }
            System.out.println("Modified Deque A = " + deques.get(indexOfDequeA));
            System.out.println("Modified Deque B = " + deques.get(indexOfDequeB));
        }
    
        private List<Deque<String>> prepareDeques() {
            List<Deque<String>> deques = new ArrayList<>();
            Deque<String> dequeB = new LinkedList<>();
            deques.add(dequeB);
            Deque<String> dequeA = new LinkedList<>();
            deques.add(dequeA);
            dequeB.addLast("Element1");
            dequeB.addLast("Element2");
            dequeB.addLast("Element3");
            System.out.println("Initial Deque A = " + dequeA);
            System.out.println("Initial Deque B = " + dequeB);
            return deques;
        }
    }
    
    import java.util.ArrayList;
    导入java.util.Deque;
    导入java.util.LinkedList;
    导入java.util.List;
    公共类Dequee示例{
    公共静态void main(字符串[]args){
    DequeExample DequeExample=新的DequeExample();
    dequeExample.testDeque();
    }
    公共无效testDeque(){
    列表任务=准备任务();
    int indexOfDequeA=0;
    int indexOfDequeB=1;
    而(!deques.get(indexOfDequeB.isEmpty()){
    字符串temp=deques.get(indexOfDequeB.pollFirst();
    数据获取(indexOfDequeA).offerLast(温度);
    }
    System.out.println(“修改的Deque A=“+deques.get(indexOfDequeA));
    System.out.println(“修改的Deque B=“+deques.get(indexOfDequeB));
    }
    私人名单编制问题(){
    List deques=new ArrayList();
    Deque dequeB=新链接列表();
    deques.add(dequeB);
    Deque dequeA=新链接列表();
    添加(dequeA);
    dequeB.addLast(“元素1”);
    dequeB.addLast(“元素2”);
    dequeB.addLast(“元素3”);
    System.out.println(“初始Deque A=“+Deque A”);
    System.out.println(“初始Deque B=“+dequeB”);
    返回deques;
    }
    }
    
    正如其他人提到的,问题是参数化类型没有指定类型参数。一旦指定了相同的值,就不必为
    temp
    执行类型转换。下面的示例代码帮助您理解这一点

    import java.util.ArrayList;
    import java.util.Deque;
    import java.util.LinkedList;
    import java.util.List;
    
    public class DequeExample {
        public static void main(String[] args) {
            DequeExample dequeExample = new DequeExample();
            dequeExample.testDeque();
        }
    
        public void testDeque() {
            List<Deque<String>> deques = prepareDeques();
            int indexOfDequeA = 0;
            int indexOfDequeB = 1;
            while (!deques.get(indexOfDequeB).isEmpty()){
                String temp = deques.get(indexOfDequeB).pollFirst();
                deques.get(indexOfDequeA).offerLast(temp);
            }
            System.out.println("Modified Deque A = " + deques.get(indexOfDequeA));
            System.out.println("Modified Deque B = " + deques.get(indexOfDequeB));
        }
    
        private List<Deque<String>> prepareDeques() {
            List<Deque<String>> deques = new ArrayList<>();
            Deque<String> dequeB = new LinkedList<>();
            deques.add(dequeB);
            Deque<String> dequeA = new LinkedList<>();
            deques.add(dequeA);
            dequeB.addLast("Element1");
            dequeB.addLast("Element2");
            dequeB.addLast("Element3");
            System.out.println("Initial Deque A = " + dequeA);
            System.out.println("Initial Deque B = " + dequeB);
            return deques;
        }
    }
    
    import java.util.ArrayList;
    导入java.util.Deque;
    导入java.util.LinkedList;
    导入java.util.List;
    公共类Dequee示例{
    公共静态void main(字符串[]args){
    DequeExample DequeExample=新的DequeExample();
    dequeExample.testDeque();
    }
    公共无效testDeque(){
    列表任务=准备任务();
    int indexOfDequeA=0;
    int indexOfDequeB=1;
    而(!deques.get(indexOfDequeB.isEmpty()){
    字符串temp=deques.get(indexOfDequeB.pollFirst();
    数据获取(indexOfDequeA).offerLast(温度);
    }
    System.out.println(“修改的Deque A=“+deques.get(indexOfDequeA));
    System.out.println(“修改的Deque B=“+deques.get(indexOfDequeB));
    }
    私人名单编制问题(){
    List deques=new ArrayList();
    Deque dequeB=新链接列表();
    deques.add(dequeB);
    Deque dequeA=新链接列表();
    添加(dequeA);
    dequeB.addLast(“元素1”);
    dequeB.addLast(“元素2”);
    dequeB.addLast(“元素3”);
    System.out.println(“初始Deque A=“+Deque A”);
    System.out.println(“初始Deque B=“+dequeB”);
    返回deques;
    }
    }
    
    您能编辑问题并显示列表和Deque是如何声明的吗?(始终使用人类可读的变量名…使用此类通用缩写很难阅读)在我看来,您在声明过程中没有为Deque指定类型参数decalaration@Liquidpie谢谢!这正是问题所在!谢谢你的帮助!你能编辑这个问题并说明列表和Deque是如何声明的吗?(总是使用人类可读的变量名…用这样的通用缩写很难阅读)在我看来,你在声明过程中没有为Deque指定类型参数decalaration@Liquidpie谢谢!这正是问题所在!谢谢你的帮助!当你发现一个答案@Vera有用时,你可以投票表决,并将其标记为“已接受答案”当你发现一个答案@Vera有用时,你可以投票表决,并将其标记为“已接受答案”