let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
let date1 = dateFormatter.date(from: "14:05")
let date2 = NSDate()
var components1 = NSCalendar.current.dateComponents([.hour, .minute], from: date1!)
let components2 = NSCalendar.current.dateComponents([.hour, .minute, .day, .month, .year], from: date2 as Date)
components1.year = components2.year;
components1.month = components2.month;
components1.day = components2.day;
let date3 = NSCalendar.current.date(from: components1)
let timeIntervalInMinutes = date3!.timeIntervalSince(date2 as Date)/60
我想将userList划分为两个子列表。包含“星期一”到一个子列表的用户和用“星期二”包含到另一个子列表中的用户。
答案 0 :(得分:3)
您可以使用Collectors.groupingBy()
根据作为参数传递的函数对流的元素进行分组,并将它们存储在Map
中,其中键是函数的结果,值是关联的List
。 1}}:
Map<String, List<User>> collect = userList.stream()
.collect(Collectors.groupingBy(User::getDay));
答案 1 :(得分:2)
您可以使用groupingBy收集器,然后只需获取所需的地图值。
Map<String, List<User>> byDay = userlist.stream().collect(
Collectors.groupingBy(User::getDay));
答案 2 :(得分:0)
列出的答案肯定是正确的,但如果你还不熟悉流,你可能会有点困惑。我将编写一个完全相同但不使用流的等效代码。也许你会更清楚:
Map<String, List<User>> usersByDay = new HashMap<>();
for(User u : userList)
{
dayusers = usersByDay.getOrDefault(u.getDay(), new ArrayList<>());
dayusers.add(u);
usersByDay.put(u.getDay(), dayusers);
}
此实现假设您的User类的定义大致如下:
public class User
{
private String day;
private String name;
private String surname;
private String email;
public User(....){...}
public String getDay(){return day;}
...
}