- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个对象列表。该对象的类型为 Class - UserType。
public class UserType {
private int userId = 0;
private int userTypeId = 0;
private String userType;
//Getters and Setters;
}
对于上面提到的List,我想根据userType过滤掉List。 userType不唯一(可以重名且不能重复),但userId、userTypeId和userType的组合是唯一的。
所以要求是,如果我有 userType,让我们说 - “ASSEMBLE”,那么我需要单独形成一个具有唯一 userType 的列表,并将 userId 和 userTypeId 作为列表附加到 Bean 中。
例如:输入格式:
[{userId: 1, userTypeId: 101, userType: "ASSEMBLE" },
{userId: 1, userTypeId: 102, userType: "ASSEMBLE" },
{userId: 2, userTypeId: 103, userType: "ARCHS" },
{userId: 3, userTypeId: 103, userType: "ARCHS" },
{userId: 4, userTypeId: 104, userType: "BAYLEAF" },
{userId: 4, userTypeId: 105, userType: "BAYLEAF" },
{userId: 5, userTypeId: 106, userType: "CHARSET" }]
预期:根据用户类型过滤结果:
[{userIds: [1] userTypeIds: [101,102], userType: "ASSEMBLE" },
{userId: [2,3], userTypeId: [103], userType: "ARCHS" },
{userId: [4], userTypeId: [104,105] userType: "BAYLEAF" },
{userId: [5], userTypeId: [106], userType: "CHARSET" }]
所以通常这必须形成一个像 -
public class UserType {
private String userType;
private List userIds = 0;
private List userTypeIds = 0;
//Getters and Setters;
}
如何根据需求过滤这个对象?还可以提供 Javascript 解决方案,以便研究一种更加优化的解决方案。提前致谢。
最佳答案
您可以使用 for
循环和 Map
来完成此操作,如下所示:
import java.util.*;
public class GroupBy {
public static void main(String[] args) {
List<UserType> userTypes = new ArrayList<>();
userTypes.add(new UserType(1, 101, "ASSEMBLE"));
userTypes.add(new UserType(1, 102, "ASSEMBLE"));
userTypes.add(new UserType(2, 103, "ARCHS"));
userTypes.add(new UserType(3, 103, "ARCHS"));
userTypes.add(new UserType(4, 104, "BAYLEAF"));
userTypes.add(new UserType(4, 105, "BAYLEAF"));
userTypes.add(new UserType(5, 106, "CHARSET"));
Map<String, UserTypeGroup> map = new HashMap<>();
for (UserType u : userTypes) {
if (!map.containsKey(u.getUserType())) {
map.put(u.getUserType(), new UserTypeGroup(u.getUserType()));
}
map.get(u.getUserType()).getUserIds().add(u.getUserId());
map.get(u.getUserType()).getUserTypeIds().add(u.getUserTypeId());
}
System.out.println("INPUT:");
System.out.println(userTypes);
System.out.println("\nOUTPUT:");
System.out.println(map.values());
}
}
class UserType {
private int userId;
private int userTypeId;
private String userType;
UserType(int userId, int userTypeId, String userType) {
this.userId = userId;
this.userTypeId = userTypeId;
this.userType = userType;
}
int getUserId() {
return userId;
}
int getUserTypeId() {
return userTypeId;
}
String getUserType() {
return userType;
}
@Override
public String toString()
{
return "{userId: " + userId + ", userTypeId: " + userTypeId +", userType: " + userType + "}\n";
}
}
class UserTypeGroup {
private String userType;
private Set<Integer> userIds = new HashSet<>();
private Set<Integer> userTypeIds = new HashSet<>();
UserTypeGroup(String userType) {
this.userType = userType;
}
Set<Integer> getUserIds() {
return userIds;
}
Set<Integer> getUserTypeIds() {
return userTypeIds;
}
@Override
public String toString()
{
return "{userIds: " + userIds + ", userTypeIds: " + userTypeIds + ", userType: " + userType + "}\n";
}
}
输出将是这样的:
INPUT:
[{userId: 1, userTypeId: 101, userType: ASSEMBLE}
, {userId: 1, userTypeId: 102, userType: ASSEMBLE}
, {userId: 2, userTypeId: 103, userType: ARCHS}
, {userId: 3, userTypeId: 103, userType: ARCHS}
, {userId: 4, userTypeId: 104, userType: BAYLEAF}
, {userId: 4, userTypeId: 105, userType: BAYLEAF}
, {userId: 5, userTypeId: 106, userType: CHARSET}
]
OUTPUT:
[{userIds: [5], userTypeIds: [106], userType: CHARSET}
, {userIds: [1], userTypeIds: [101, 102], userType: ASSEMBLE}
, {userIds: [2, 3], userTypeIds: [103], userType: ARCHS}
, {userIds: [4], userTypeIds: [104, 105], userType: BAYLEAF}
]
关于java - 根据对象的属性值过滤列表 - Java/Javascript?(首选流/功能类型的方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55062557/
如标题所示,ans_list是一个答案列表,ans_index是一个数字(答案在词汇表中的索引,但与atm无关) 这里生成的 tree.anslist 是什么? (例如,仅针对第一个),忽略迭代。 f
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我目前将用户的输入存储在逗号分隔的列表中,如下所示: Userid | Options 1 | 1,2,5 用户在一个数组形式中勾选一组选项,然后用逗号连接起来 1,2,5 然后 MySQ
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将具有一个元素的东西拿走。 这与 How do I “flatte
我想知道如何完全展平列表和包含它们的东西。除其他外,我想出了一个解决方案,它可以将具有多个元素的东西滑倒并将它们放回原处,或者在滑倒后将带有一个元素的东西拿走。 这与 How do I “flatte
这个问题已经有答案了: Convert nested list to 2d array (3 个回答) 已关闭 7 年前。 java中有没有快捷方式可以转换 List> 到 String[][] ?
我在排序时遇到问题 List> 。我创建了一个自定义比较器,在其中编写了对数据进行排序的代码。 public class CustomComparator implements Comparator
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Java Generics: Cannot cast List to List? 我只是想知道为什么下面的java代
试图想出一个 LINQy 方法来做到这一点,但我什么也没想到。 我有一个对象列表<>,其中包含一个属性,该属性是逗号分隔的字母代码列表: lst[0].codes = "AA,BB,DD" lst[1
假设我有这些任务: points = [] point = (1, 2) 我怎么会这样做: points += point 它工作得很好,并且给了我点 = [1, 2]。但是,如果我这样做: poin
如何在 scala 中将 List[Task[List[Header]]] 类型转换为 Task[List[Header]]。 我有一个方法返回 Task[List[Header]] 并多次调用 do
如何在 Java 中查找二维列表的元素? 我有一个参数为 List> 的函数我想知道如何找到这个列表的行和列。 最佳答案 如果你喜欢 List> obj 然后你就可以像这样访问 obj.get(cur
分配 List到 List工作正常。 分配 List>到 List>不编译。 代码 public class Main { public static void main(String[] a
我正在用 Java 编写一个方法,该方法必须接收并迭代 Serializable 的 List。 有什么区别: public void myMethod(List list) { } 和 public
我看到很多人想用 mvvm 更新网格/列表/树的一部分,但他们不想刷新整个列表。 对于所有遇到此问题的人,我做了以下示例。 希望这对你有用。 最佳答案 这是一个简单的例子。整个代码中最重要的是: Bi
我正在为现有的 C++ 库编写包装器,该库使用列表,其中 T 是自定义结构。我被建议使用 vector 而不是列表,但我试图避免修改库。 为了更好地理解这个场景,我做了一个简单的应用程序,使用一个列表
List list List list 这两种声明有什么区别吗? 谢谢, 最佳答案 是的。 List可以包含所有派生自 Base 的不同事物的混合物. List包含同质项(从某种意义上说,它们必须全部
有人可以尽可能详细地解释以下类型之间的区别吗? List List List 让我更具体一点。我什么时候想使用 // 1 public void CanYouGiveMeAnAnswer(List l
我有一个元组列表,每个元组都是一对列表。所以我的数据看起来像: mylist = [(['foo', 'bar'], ['bar', 'bar']),(['bar', 'bar'],['bar', '
也许是一个时髦的标题,但我遇到了以下问题: 给定一个类型为 (a * b) list 的列表,我想创建一个类型为 (a * b list) list 的新列表。一个例子: 给定列表 let testL
我是一名优秀的程序员,十分优秀!