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

时间:2017-01-06 07:06:52

标签: java arrays object arraylist graph

我最近开始使用邻接矩阵处理图形,虽然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即使我尝试使用整数数组列表,这个问题仍然存在。

3 个答案:

答案 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]