如何迭代列表<;?扩展E>;在Java中,是否使用实际对象?
所以我知道迭代可以使用for-each或Iterator。但我的问题是,我想通过按条件删除一些元素来创建一个相同类型的新列表。 前-如何迭代列表<;?扩展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
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"));