我有两个不同的清单。在第一个列表的内部有一个数组。 我需要创建一个新列表,将第二个列表的值与Array相比较 第一个清单。将其他元素保留在第一列表中。
示例:
List1:
{
name:"";
fone:"";
numbers:["1", "2", "3", "4", "5", "6"]
}
numbers2:
{
1;
4;
6;
}
ListResult = {
name:"";
fone:"";
numbers:["1", "4", "6"]
}
答案 0 :(得分:0)
正如Silvio所说,给定的数据看起来像JSON对象。 假设如果您是两个列表(与集合相同),则可以使用Java为集合提供的keepAll或removeAll。 请参阅:https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#removeAll(java.util.Collection)
答案 1 :(得分:0)
您可以尝试这个。
ListResult = list1.getNumbers().stream().filter(n-> number2.contains(Integer.parseInt(n))).collect(Collectors.toList());
我假设您的数字1和数字2之类的“数组”实际上是java列表。
答案 2 :(得分:0)
实际上,您的输入格式太混乱了,据我所知,这是我能做的最好的事情。
如果您想要一个自定义列表(例如JSON对象),则应该有一个这样的类
public class CustomList {
private String name;
private String fone;
private ArrayList<String> numbers;
private ArrayList<Integer> numbers2;
public String toString(){
String output = "";
output = "{" +
"\nname: " + this.name +
"\nfone: " + this.fone +
"\nnumbers: " + numbers.toString() +
"\n}";
return output;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getFone() {
return fone;
}
public void setFone(String fone) {
this.fone = fone;
}
public ArrayList<String> getNumbers() {
return numbers;
}
public void setNumbers(ArrayList<String> numbers) {
this.numbers = numbers;
}
public ArrayList<Integer> getNumbers2() {
return numbers2;
}
public void setNumbers2(ArrayList<Integer> numbers2) {
this.numbers2 = numbers2;
}
}
public class ListAnalyzer {
public static void main(String[] args) {
CustomList myList = new CustomList();
myList.setName("\"\"");
myList.setFone("\"\"");
myList.setNumbers(new ArrayList<String>());
myList.getNumbers().add("1");
myList.getNumbers().add("4");
myList.getNumbers().add("6");
System.out.println(myList.toString());
}
}
输出
{
name: ""
fone: ""
numbers: [1, 4, 6]
}