如何在Java中使用原始数据类型列表访问特定元素

如何在Java中使用原始数据类型列表访问特定元素,java,arrays,object,arraylist,graph,Java,Arrays,Object,Arraylist,Graph,我最近开始使用邻接矩阵处理图,虽然二维整数数组通常足以处理加权图,但存在一个特殊的问题,即每当我访问m行和n列的元素时,我必须删除该行和列。由于删除只能(轻松地)在列表中进行,我尝试切换到具有列表的数据结构,但很快意识到我无法单独访问单个列表的元素。下面是一个要澄清的例子- import java.util.*; public class List_Of_List_Example { static List list1=new ArrayList<List>(); p

我最近开始使用邻接矩阵处理图,虽然二维整数数组通常足以处理加权图,但存在一个特殊的问题,即每当我访问m行和n列的元素时,我必须删除该行和列。由于删除只能(轻松地)在列表中进行,我尝试切换到具有列表的数据结构,但很快意识到我无法单独访问单个列表的元素。下面是一个要澄清的例子-

import java.util.*;
public class List_Of_List_Example
{
    static List list1=new ArrayList<List>();
    public static void main(String[]args)
    {
       List lt1=new ArrayList(Arrays.asList(1,2,3));
       list1.add(lt1);
       List lt2=new ArrayList(Arrays.asList(4,5,6));
       list1.add(lt2);
       List lt3=Arrays.asList(list1.get(0));
       System.out.println(lt3.get(0));//Outputs [1,2,3]
    }
}
import java.util.*;
公共类列表的列表示例
{
静态列表list1=新的ArrayList();
公共静态void main(字符串[]args)
{
List lt1=新的ArrayList(Arrays.asList(1,2,3));
列表1.添加(lt1);
List lt2=新的ArrayList(Arrays.asList(4,5,6));
列表1.添加(lt2);
List lt3=Arrays.asList(list1.get(0));
System.out.println(lt3.get(0));//输出[1,2,3]
}
}
在上面的代码中,我希望能够在从主列表中获取特定列表后访问lt3的每个单独元素。有没有办法解决这个问题

谢谢

即使我尝试使用整数数组列表,这个问题仍然存在。

而不是

List lt3=Arrays.asList(list1.get(0));

但不要忽视这些评论。它们更重要。

而不是

List lt3=Arrays.asList(list1.get(0));


但不要忽视这些评论。它们更重要。

在分配给
lt3
时,不要调用
Arrays.asList()

另外,不要使用原始泛型类型

以下是指定了泛型类型参数的固定代码:

static List<List<Integer>> list1 = new ArrayList<>();
public static void main(String[] args) {
    List<Integer> lt1 = new ArrayList<>(Arrays.asList(1,2,3));
    list1.add(lt1);
    List<Integer> lt2 = new ArrayList<>(Arrays.asList(4,5,6));
    list1.add(lt2);
    List<Integer> lt3 = list1.get(0); // Same as lt1
    System.out.println(lt3.get(0)); // Outputs 1
}
static List list1=new ArrayList();
公共静态void main(字符串[]args){
List lt1=新的ArrayList(Arrays.asList(1,2,3));
列表1.添加(lt1);
List lt2=新的ArrayList(Arrays.asList(4,5,6));
列表1.添加(lt2);
List lt3=list1.get(0);//与lt1相同
System.out.println(lt3.get(0));//输出1
}

在分配给
lt3
时,不要调用
Arrays.asList()

另外,不要使用原始泛型类型

以下是指定了泛型类型参数的固定代码:

static List<List<Integer>> list1 = new ArrayList<>();
public static void main(String[] args) {
    List<Integer> lt1 = new ArrayList<>(Arrays.asList(1,2,3));
    list1.add(lt1);
    List<Integer> lt2 = new ArrayList<>(Arrays.asList(4,5,6));
    list1.add(lt2);
    List<Integer> lt3 = list1.get(0); // Same as lt1
    System.out.println(lt3.get(0)); // Outputs 1
}
static List list1=new ArrayList();
公共静态void main(字符串[]args){
List lt1=新的ArrayList(Arrays.asList(1,2,3));
列表1.添加(lt1);
List lt2=新的ArrayList(Arrays.asList(4,5,6));
列表1.添加(lt2);
List lt3=list1.get(0);//与lt1相同
System.out.println(lt3.get(0));//输出1
}
其他解决方案。:-)

其他解决方案:-)


如果您使用的是图形,那么我建议您专门使用该数据结构。列表是一个图形,但图形不一定是一个列表。无论如何,我可以在其中快速删除行和列吗?@timbiegeleisenrelated:1)您不能拥有“Java中原始数据类型的列表”<代码>列表无法存储基元值。2) 不要使用原始泛型类型<代码>列表是一个大禁忌。它应该是
列表lt1
列表列表1
。3) 原语
int
1
2
。。。编译器会将这些数据自动装箱到
Integer
。如果您使用的是图形,那么我建议您专门使用该数据结构。列表是一个图形,但图形不一定是一个列表。无论如何,我可以在其中快速删除行和列吗?@timbiegeleisenrelated:1)您不能拥有“Java中原始数据类型的列表”<代码>列表无法存储基元值。2) 不要使用原始泛型类型<代码>列表是一个大禁忌。它应该是
列表lt1
列表列表1
。3) 原语
int
1
2
。。。由编译器自动装箱到
Integer
[1][CHECK ITEMS of lt3]
lt3[0] = 1
lt3[1] = 2
lt3[2] = 3

[2][CHECK ITEMS of list1]
row 0 :: [1][2][3]
row 1 :: [4][5][6]
row 2 :: [1][2][3]

[3][REMOVE ITEM of list1]
row 0 :: [1][2][3]
row 1 :: [4][5][6]
row 2 :: [1][3]