Java,访问存储在列表中的数据
所以我有一个Deques的列表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
l1
,存储在ListArray中,
字符串存储在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有用时,你可以投票表决,并将其标记为“已接受答案”