-1
我想将一个列表映射到另一个列表。第一份清单的所有内容都将作出决定。下面是它会是什么样子,在糟糕的代码:使用流生成一个新的列表考虑到所有的第一个列表元素
import java.lang.Math;
import java.util.List;
import java.util.ArrayList;
import java.util.Arrays;
public class HelloWorld
{
public static void main(String[] args)
{
MatchingClass myObject = new MatchingClass();
System.out.println(myObject.getMatchingEnums(Arrays.asList("param1", "param3", "param2")));
System.out.print(myObject.getMatchingEnums(Arrays.asList("param1", "param3", "param4")));
}
}
enum TheEnums {
elem1("param1", "param2"),
elem2("param1", "param3");
String[] parameters;
TheEnums (String... parameters){
this.parameters = parameters;
}
String[] getParams(){
return parameters;
}
}
// you can add other public classes to this editor in any order
public class MatchingClass
{
public List<TheEnums> getMatchingEnums (List<String> givenParameters) {
List<TheEnums> result = new ArrayList<>();
for (TheEnums theEnum : TheEnums.values()){
if (givenParameters.containsAll(Arrays.asList(theEnum.getParams()))){
result.add (theEnum);
}
}
return result;
}
}
这可以写成更好,但我想知道的是,如果我们可以使用Java 8个流才能够做到这一点。
也许使用收集器?
谢谢。
能不能请你重写你的代码是正确的Java?这真的很烦人阅读。 –
这甚至不编译 – kamehl23
增加了一个工作编译的例子 –