如何在arraylist中找到特定值?

时间:2016-08-29 18:36:47

标签: java arraylist

我有一个列表,我将作为数据传递给我。他们给出的例子是对象看起来像这样:

List assetClassCorrelationMatrix = new ArrayList();
List m1 = new ArrayList();
m1.add(2);
m1.add(4);
m1.add(0.8979);
assetClassCorrelationMatrix.add(m1);
编辑:好的,所以我很抱歉我不清楚。 我当时认为这将是

的结构
correlation[2][4] = 0.8979
相反,他们给了我:

correlation[0] = 2;
correlation[1] = 4;
correlation[2] = 0.8979;

当我只有correlation[2]correlation[0]

中的值时,我只需要取回correlation[1]中的任何内容

帮助?

2 个答案:

答案 0 :(得分:3)

在嵌套的arraylist中,您不需要其他值来查找特定值。如果您在arraylist assetClassCorrelationMatrix中寻找特定值,则可以这样做:

double num = 0.8979;        
for (Object object: assetClassCorrelationMatrix) {            
    List list = (List) object;                                    
    if(list.contains(num))
        System.out.println("The number " + num + " is found at index =  " + list.indexOf(num));
}

编辑:编辑完问题后,上下文似乎发生了根本变化。现在您有两个值(如2D数组中的索引值2和4),并且您希望获得索引的值。您可以轻松地使用2D数组执行此操作。但如果你想坚持使用列表,你可以这样:

    List assetClassCorrelationMatrix = new ArrayList();

    int a=2, b=4;

    List m1 = new ArrayList();
    List m2 = new ArrayList();        

    // inserting values
    m2.add(0, 1.1); 
    m2.add(1, 2.0);
    m2.add(2, 0.5);
    m2.add(3, 0.8979);

    assetClassCorrelationMatrix.add(m1);
    assetClassCorrelationMatrix.add(m2);

    List list = (List) assetClassCorrelationMatrix.get(a-1);
    Number number = (Number) list.get(b-1);
    System.out.println("List = " + a + " and index = " + b + " and the number = " + number);

答案 1 :(得分:1)

首先正确指定列表的类型,它应该是这样的:

List<List<Number>> assetClassCorrelationMatrix = new ArrayList<>();
List<Number> m1 = new ArrayList<>();

然后,您可以使用List#get(int)访问您的值0.8979,如下所示:

Number n = m1.get(2); // The indexes start from 0, so the index of the 3th element is 2

如果您想从assetClassCorrelationMatrix访问它,那就是:

Number n = assetClassCorrelationMatrix.get(0).get(2);

您可以通过检查类型来识别此值,确实24将自动转换为Integer,因为自动装箱和0.8979Double

for (Number n : m1) {
    if (n instanceof Double) {
        // Here is the code that treats the Double value
    }
}