У меня есть метод, который принимает List<String>
и List<Map<String, Object>>
:
public List<Map<String, Object>> filterMethod() {
List<String> listId = this.getUserIds(); //includes only the user id's
List<Map<String, Object>> listUser = this.getUserDetails(); // includes user_id, user_name, and user_email
List<Map<String, Object>> filteredListUser = null;
return filteredListUser;
}
Что я хотел бы сделать, это сравнить эти два и вернуть новое List<Map<String, Object>>
.
Сравнение, которое я хотел бы сделать, показано в качестве примера:
Допустим,
List<String> listId =
[
"8000",
"8002",
"8004",
"8006",
"8010",
"8012",
"8014",
"8016",
"8018",
"8020",
"8022",
"8024"
]
List<Map<String, Object>> listUser =
[
{
"USER_ID": "8001",
"USER_NAME": "username1",
"USER_MAIL": "email1@foo.com"
},
{
"USER_ID": "8002",
"USER_NAME": "username2",
"USER_MAIL": "email2@foo.com"
},
{
"USER_ID": "8003",
"USER_NAME": "username3",
"USER_MAIL": "email3@foo.com"
},
{
"USER_ID": "8004",
"USER_NAME": "username4",
"USER_MAIL": "email4@foo.com"
},
{
"USER_ID": "8005",
"USER_NAME": "username5",
"USER_MAIL": "email5@foo.com"
},
{
"USER_ID": "8006",
"USER_NAME": "username6",
"USER_MAIL": "email6@foo.com"
},
{
"USER_ID": "8007",
"USER_NAME": "username7",
"USER_MAIL": "email7@foo.com"
}
]
Я хотел бы вернуть новый фильтрованный List<Map<String, Object>>
, который содержит listUser
строк, где listUser USER_ID
находится в listId
(то есть:)
List<Map<String, Object>> filteredListUser =
[
{
"USER_ID": "8002",
"USER_NAME": "username2",
"USER_MAIL": "email2@foo.com"
},
{
"USER_ID": "8004",
"USER_NAME": "username4",
"USER_MAIL": "email4@foo.com"
},
{
"USER_ID": "8006",
"USER_NAME": "username6",
"USER_MAIL": "email6@foo.com"
}
]
Проблема возникает, когда мне нужно сравнить user_id
из listUser
с listId
чтобы проверить, нужно ли мне добавить строку в filteredListUser
.
Я бы знал, как это сделать, если бы это были просто два строковых массива, например:
String[] a = {1, 2, 3, 4, 5, 6, 7};
String[] b = {2, 4, 6, 8, 10};
ArrayList<String> c = new ArrayList<String>();
for (int i = 0; i < a.length; i++) {
if (Arrays.asList(b).contains(a[i])) {
c.add(a[i]);
}
}
IЯ думаю, что цикл for также подходит для сравнений List, но я не уверен, как можно сравнить user_id
в listUser
с listId
в List<Map<String, Object>>
и List<String>
.
В качестве попытки и с точки зрения псевдокода я пытаюсь сделать следующее:
public List<Map<String, Object>> filterMethod() {
List<String> listId = this.getUserIds(); //includes only the user id's
List<Map<String, Object>> listUser = this.getUserDetails(); // includes user_id, user_name, and user_email
List<Map<String, Object>> filteredListUser = null;
for (int i = 0; i < listUser.length; i++) {
if (listId.contains(listUser.USER_ID[i])) {
filteredListUser.add(listUser[i]);
}
}
return filteredListUser;
}
Однако я не совсем уверен, куда идти дальше - буду признателен за любую помощь!
Извиняюсь, если это действительно рудиментарный вопрос - я очень новичок в программировании.Заранее спасибо!