从列表列表中提取列表

时间:2017-07-11 14:33:18

标签: java list arraylist

我有一个java列表。

static ArrayList<List> permutationS = new ArrayList<List>();

内部列表是整数的ArrayList。

List<Integer> innerList = new ArrayList<Integer>();

现在我想选择一个innerList,如果它包含一个特定的整数。 我怎样才能做到这一点?

7 个答案:

答案 0 :(得分:1)

这样做:

    $('#upload_form').submit(function(e)
    {
        e.preventDefault();
        var title = $('#title').val();
        var designation = $('#position').val();
        var category = $('#category').val();
        var azimaData = new FormData(); // create a new FormData.. 
        azimaData.append('name', title);
        azimaData.append('designation', designation);
        azimaData.append('category', category);
        azimaData.append('_token', _csrfToken);

        $.ajax({
            method: 'POST',
            url: link + '/@dashboard@/galleryImage/add_image',
            data: azimaData,
            //use contentType, processData for sure.
            contentType: false,
            processData: false,

            success: function(msg) {

                if(msg.status == success)
                {
                    alert(msg.msg);
                }
                else
                {
                    alert(msg.msg);
                }
            },
            error: function(xhr) {

                console.log(xhr);
            }
        });

    });

答案 1 :(得分:0)

由于我不知道您正在使用哪个Java版本,我建议像

一样循环
List<List<Integer>> Permutation_S = new ArrayList<List<Integer>>(); 
for(List<Integer> listInList: Permutation_S){
    for(Integer integerValue: listInList){
        if(integerValue == 2 /*your desired value*/){
            //DO SOMETHING
        }
    }
}

当然,如果您使用的是Java 8或更高版本,则可以使用流

答案 2 :(得分:0)

stream的解决方案:

int x = 3; // the number to be looked

List<Integer> selectedInnerList = permutationS.stream()
                                              .filter(s -> s.contains(x))
                                              .findFirst()
                                              .get();

请注意findFirst()返回一个Optional对象,因此如果没有这样的元素,get()将抛出异常

答案 3 :(得分:0)

怎么样:

public List getList(Object value) {

    for (List inner : Permutation_S) {
        if (inner.contains(value))
            return inner;
    }
}

答案 4 :(得分:0)

一种解决方案是删除所有不包含特定整数的List<Integer>(例如10):

permutationS.removeIf(list -> !list.contains(10));

另一种解决方案是使用流和过滤来完成它:

permutationS.stream()
            .filter(list -> list.contains(10))
            .collect(Collectors.toList());

如果您只查找单个List<Integer>,则可以使用以下内容:

List<Integer> newList = permutationS.parallelStream()
                                    .filter(list -> list.contains(10))
                                    .findAny()
                                    .orElseGet(ArrayList::new);

答案 5 :(得分:0)

也许有这样的结构?

for (List<Integer> lists : permutationS) {
    for(Integer integers : lists){
        //Your tests 
    }
}

答案 6 :(得分:0)

这将允许您获取包含所需值的列表,如果没有一个内部列表包含它,它将返回一个新的空列表:

int val = 10;
List<Integer> innerList = permutationS.stream()    //iterate over inner lists
        .filter(list -> list.contains(val))        //keep one which contains the value
        .findAny()                                 //keep only one if exists
        .orElse(new ArrayList<>());                // if no-one return new List

示例:

permutationS.add(Arrays.asList(0, 6, 13, 14));
permutationS.add(Arrays.asList(1, 10, 11, 18, 6, 78, 79, 9));
permutationS.add(Arrays.asList(2, 22, 4, 20));

List<Integer> innerList = permutationS.stream().filter(list -> list.contains(10))
                                               .findAny().orElse(new ArrayList<>());
innerList.size(); // = 8

List<Integer> innerList2 = permutationS.stream().filter(list -> list.contains(34))
                                                .findAny().orElse(new ArrayList<>());
innnerList2.size(); // = 0