我需要创建一个列1和2相等的列表

时间:2017-04-02 05:47:23

标签: java list collections

我需要创建一个列1和2相等的列表

  public static List<Integer> lessThanZero(List<Integer> l) {
        for(int x = 0; x < list.length; x++) {
            if(list[x] < 0){

            }
        }
    }

3 个答案:

答案 0 :(得分:3)

注意:这个问题经过大量编辑,现在它已成为一个完全不同的问题。这个答案是针对原始问题的。此时编辑的问题对我没有任何意义,因此我没有修改此答案以解决编辑后的版本。

这应该这样做:

public static List<Integer> lessThanZero(List<Integer> list) {
    List<Integer> result = new ArrayList<>();
    for (Integer val : list) {
        if (val < 0) {
            result.add(val);
        }
    }
    return result;
}

或者,从Java 8开始,您可以使用流来完成:

public static List<Integer> lessThanZero(List<Integer> list) {
    return list.stream().filter(v -> v < 0).collect(Collectors.toList());
}

答案 1 :(得分:2)

在Java 8+中,您可以使用StreamfilterCollector。像,

public static List<Integer> lessThanZero(List<Integer> l) {
    return l.stream().filter(x -> x < 0).collect(Collectors.toList());
}

在早期版本中,您当前的方法会起作用 - 但是您在收集值时需要保留值(我更喜欢for-each循环,值得注意List不是数组)

public static List<Integer> lessThanZero(List<Integer> l) {
    List<Integer> r = new ArrayList<>();
    for (Integer v : l) {
        if (v < 0) {
            r.add(v);
        }
    }
    return r;
}

答案 2 :(得分:-1)

希望这会有所帮助。

public static List<Integer> lessThanZero(List<Integer> list) {

        List<Integer> lessthanlist = new ArrayList<>();
        for(int x = 0; x < list.length; x++) {
              if(list[x] < 0){
                   lessthanlist.add(list[x]);
              }
        }

           return lessthanlist;
}