我最近开始使用邻接矩阵处理图形,虽然2D整数数组通常足以用于加权图形,但是每当我访问行 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]
}
}
在上面的代码中,我希望能够在从主列表中获取该特定列表后访问lt3的每个单独元素。关于如何解决这个问题的任何想法?
由于
P.S即使我尝试使用整数数组列表,这个问题仍然存在。
答案 0 :(得分:3)
而不是
List lt3=Arrays.asList(list1.get(0));
DO
List lt3=list1.get(0);
但不要忽视评论。它们更重要。
答案 1 :(得分:0)
分配到Arrays.asList()
时,请勿致电lt3
。
另外,请勿使用 raw 泛型类型。
以下是指定泛型类型参数的固定代码:
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
}
答案 2 :(得分:0)
其他解决方案。 : - )
static ArrayList<ArrayList<Integer>> list1 = new ArrayList<ArrayList<Integer>>();
public static void main(String[] args) {
//departFile();
ArrayList<Integer> lt1 = new ArrayList<Integer>();
lt1.add(1);
lt1.add(2);
lt1.add(3);
list1.add(lt1);
ArrayList<Integer> lt2 = new ArrayList<Integer>();
lt2.add(4);
lt2.add(5);
lt2.add(6);
list1.add(lt2);
ArrayList<Integer> lt3 = new ArrayList<Integer>();
lt3.addAll(list1.get(0));
list1.add(lt3);
System.out.println("[1][CHECK ITEMS of lt3]");
for(int i=0; i<lt3.size(); i++) {
System.out.println("lt3["+i+"] = " + lt3.get(i));
}
System.out.println("\n[2][CHECK ITEMS of list1]");
for(int row=0; row<list1.size(); row++) {
ArrayList<Integer> rowItem = list1.get(row);
System.out.print("row "+row+" :: ");
for(int col=0; col<rowItem.size(); col++) {
System.out.print("[" + rowItem.get(col) + "]");
}
System.out.print("\n");
}
System.out.println("\n[3][REMOVE ITEM of list1]");
list1.get(2).remove(1); // remove item index 1 of lt3
for(int row=0; row<list1.size(); row++) {
ArrayList<Integer> rowItem = list1.get(row);
System.out.print("row "+row+" :: ");
for(int col=0; col<rowItem.size(); col++) {
System.out.print("[" + rowItem.get(col) + "]");
}
System.out.print("\n");
}
}
<强> [结果] 强>
[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]