C'est un mémorandum complet
Il existe deux modèles Éliminez les données que PK porte Conservez le reste des données sous forme de liste
package test;
public class Models {
class Model1 {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class Model2 {
private String id;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import test.Models.Model1;
import test.Models.Model2;
/**
* test
*
* @author me
*
*/
public class Test2 {
/**
* main
* @param args
*/
public static void main(String[] args) {
distinct();
}
/**
*Le gars qui élimine le brouillard PK du modèle
*/
private static void distinct() {
Models models = new Models();
List<Model1> list1 = Collections.synchronizedList(new ArrayList<Model1>());
List<Model2> list2 = Collections.synchronizedList(new ArrayList<Model2>());
Models.Model1 model1 = models.new Model1();
model1.setId("1");
model1.setName("asdasdasdas");
list1.add(model1);
Models.Model1 model11 = models.new Model1();
model11.setId("2");
model11.setName("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
list1.add(model11);
Models.Model2 model2 = models.new Model2();
model2.setId("1");
list2.add(model2);
Models.Model2 model22 = models.new Model2();
model22.setId("2");
list2.add(model22);
Models.Model2 model222 = models.new Model2();
model222.setId("3");
list2.add(model222);
/** -----Cette fonction----- */
//Liste PK de list1 à l'exclusion de celles que list2 et PK portent
List<String> uniKeyList = list1.stream().map(data1 -> data1.getId())
.filter(key1 -> list2.stream().map(data2 -> data2.getId()).anyMatch(key2 -> key1.equals(key2)))
.collect(Collectors.toList());
//Rechercher list1 avec uniKeyList
List<Model1> uniData = list1.stream()
.filter(data -> uniKeyList.stream().anyMatch(key -> data.getId().equals(key)))
.collect(Collectors.toList());
System.out.println(uniData);
}
}
Tout d'abord, faites une liste de PK sans brouillard
Rechercher dans la liste des modèles originaux
J'ai pris le pas d'éliminer les données de brouillard PK
Absolument gaspillage ... Je pense que nous devrions pouvoir le rendre plus intelligent
Recommended Posts