Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何迭代列表<;?扩展E>;在Java中,是否使用实际对象?_Java_List_Arraylist_Collections_Extends - Fatal编程技术网

如何迭代列表<;?扩展E>;在Java中,是否使用实际对象?

如何迭代列表<;?扩展E>;在Java中,是否使用实际对象?,java,list,arraylist,collections,extends,Java,List,Arraylist,Collections,Extends,所以我知道迭代可以使用for-each或Iterator。但我的问题是,我想通过按条件删除一些元素来创建一个相同类型的新列表。 前- List您可以这样尝试: List<? extends E> newList = myList.stream().filter(x -> x.getName().equals("abc")).collect(Collectors.toList()); List您不能将任何非null值添加到列表我做了如下操作 mylist.r

所以我知道迭代可以使用for-each或Iterator。但我的问题是,我想通过按条件删除一些元素来创建一个相同类型的新列表。 前-

List您可以这样尝试:

List<? extends E> newList = myList.stream().filter(x -> x.getName().equals("abc")).collect(Collectors.toList());

List您不能将任何非
null
值添加到
列表我做了如下操作

mylist.removeIf(element -> element.getName().equals("abc"));

将结果声明为
list没有任何意义。唯一的优点是类型与输入匹配。如果您需要将列表传递回从何处获得输入的位置,这可能是相关的。但是获取
列表没有任何好处
public static void main(String[] args) {
        List<? extends E> myList  = new ArrayList<>();;

        List<E> newList = new ArrayList<>();

        for(E element: myList) {
            if (element instanceof D) {
                D elementD = (D)element;
                if(elementD.getName().equals("abc")) {
                    newList.add(elementD); // would throw an error because the list is of a different type.
                }

            }
        }

    }
public static void main(String[] args) {
        List<? extends E> myList  = new ArrayList<>();;

        List<D> newList = new ArrayList<>();

        for(E element: myList) {
            if (element instanceof D) {
                D elementD = (D)element;
                if(elementD.getName().equals("abc")) {
                    newList.add(elementD); // would throw an error because the list is of a different type.
                }

            }
        }

    }
public static void main(String[] args) {
        List<? extends E> myList  = new ArrayList<>();;

        List<? extends E> newList = new ArrayList<>();

        for(E element: myList) {
            if (element instanceof D) {
                D elementD = (D)element;
                if(elementD.getName().equals("abc")) {
                    newList.add(elementD); // would throw an error because the list is of a different type.
                }

            }
        }

    }
List<? extends E> myList;
List<? extends E> newList = filterList(myList);
...

private <T extends E> List<T> filterList(List<T> myList) {
  List<T> newList = new ArrayList<>();
  for(T element: myList) {
    if(element.getName().equals("abc")) {
        newList.add(element);
    }
  }
  return newList;
}
mylist.removeIf(element -> element.getName().equals("abc"));