java - '线程“主”java.lang.UnsupportedOperationException 中的异常'
问题描述
例外是在 ListCreator i 'when' 方法行中添加 t 你们可以告诉我为什么我得到这个例外吗?Intelij 在语法和逻辑上没有发现任何错误,那么问题出在哪里?我想制作自己的映射器和选择器(过滤器),我一直得到这个。这里有什么问题吗?你能看看是什么原因造成的吗?我需要使用泛型,而我迷失了这些。
package zad1;
import java.util.*;
public class ListCreator<T> {// Uwaga: klasa musi być sparametrtyzowana
List<T> list;
protected ListCreator(List<T> listcreate){
this.list = listcreate; //kreator robi nowa liste zeby nie modyfikowac
}
public static <T> ListCreator<T> collectFrom(List<T> srclist){
ListCreator<T> listCreator = new ListCreator<>(srclist);
return listCreator;
}
public ListCreator<T> when(Selector<T> selector){
List<T> nextlist = new ArrayList<>();
for (T t: this.list){
if (selector.select(t)){
this.list.add(t); //dla kazdego elementu list ktoremu kolejno odpowiada t, jesli spelnia warunek to element jest dodawany do nowej listy
}
}
this.list = nextlist;
return this;
}
public <S> List<S> mapEvery(Mapper<T,S> map){
List<S> dlist = new ArrayList<>();
for (T arg: this.list){
dlist.add(map.map(arg));
}
return dlist;
}
}
package zad1;
import java.util.*;
public class Main {
public Main() {
List<Integer> src1 = Arrays.asList(1,7,9,11,12);
System.out.println(test1(src1));
List<String> src2 = Arrays.asList("a", "zzzz", "vvvvvvv");
System.out.println(test2(src2));
}
public List<Integer> test1(List<Integer> src) {
Selector <Integer> sel = new Selector<Integer>() {
@Override
public boolean select(Integer arg) {
return arg < 10;
}
};
Mapper <Integer,Integer> map = new Mapper<Integer, Integer>() {
@Override
public Integer map(Integer arg) {
return arg + 10;
}
};
return ListCreator.collectFrom(src).when(sel).mapEvery(map);
}
public List<Integer> test2(List<String> src) {
Selector <String> sel = new Selector<String>() {
@Override
public boolean select(String arg) {
if (arg.length() > 3)
return true;
else
return false;
}
};
Mapper <String, Integer> map = new Mapper<String, Integer>() {
@Override
public Integer map(String arg) {
return arg.length() + 10;
}
};
return ListCreator.collectFrom(src).when(sel).mapEvery(map);
}
public static void main(String[] args) {
new Main();
}
}
解决方案
推荐阅读
- multithreading - CompletableFulture runAsync 未启动新线程
- ckeditor - 如何在 TYPO3 8.7 中实现 RTE 中的内联图像
- vb.net - 如何从 vb.net 中的数字前面删除 0
- c - 带有 char* 的 C 中的内存访问错误问题
- javascript - 比较html和jquery中的html值
- python - 将长度为 n 的字符串读取为 pandas 中的 n 列
- datagridview - 如何访问、控制外部 Winform 应用程序的 Datagridview?
- docker - Dockerfile 无法运行 cp 命令在容器内移动文件
- postgresql - Postgres - 更改列:错误:运算符不存在:布尔 = 整数
- node.js - 如何在服务器上托管反应应用程序和节点 API