我想从列表中过滤基于员工的记录。
我的员工对象看起来像
<pre>new Employee(EmpID, EmpName,"month-year",Transition)
每个员工可以拥有多个具有不同转换和月份年度的对象,例如<pre>Hired , Bench, joinedproject,releasedproject,resign
和各自的日期
现在我想从每位员工的第一个和最后一个对象获取月份。
例如
<pre>new Employee(1, "alex","02-2016","Hired")
new Employee(1, "alex","02-2016","Bench")
new Employee(1, "alex","03-2016","Project")
new Employee(1, "alex","12-2016","Resign")
new Employee(1, "alex","01-2017","Exit")
对于上面的示例,我将获取日期为“02-2016”和“01-2017”
我希望我的问题很明确。
任何指针都会受到高度赞赏。
答案 0 :(得分:1)
这应该适合您的问题:
= 1 AND
开头的长构建器调用是因为.
在一个月中没有一天的情况下无法实现= '1' AND
,所以我们必须指定默认日期(在这种情况下为1)。
注意:从你的问题中不清楚你的= '2017-01'
类的结构是什么,所以我认为它符合JavaBeans模式并为x<-T4A4$X79
y<-sort(x,decreasing=FALSE)
View(y)
vectorlength=length(y)
View(vectorlength)
d=dfrechet(y,shape=1)
p=pfrechet(y,shape=1)
q=qfrechet(p,shape=1)
View(d)
View(p)
View(q)
plot(q,y,main="Frechet")
和var XHR = ("onload" in new XMLHttpRequest()) ? XMLHttpRequest : XDomainRequest;
var xhr = new XHR();
xhr.open("GET", "addres/file.csv.gz", true);
xhr.send(null);
xhr.onload = function() {
console.log( this.responseText );<----
}
xhr.onerror = function() {
alert( "Error " + this.status );
}
提供了getter。 List<Employee> list = ...
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("MM-yyyy")
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
.toFormatter();
list.removeIf(e -> LocalDate.parse(e.getHiringDate(), formatter)
.until(LocalDate.parse(e.getTerminationDate(), formatter)).getMonths() < 3);
属性。但是,如果您的结构与我的结构不同,您应该能够将此解决方案应用到现有代码中。
答案 1 :(得分:0)
要获得您可能做的每个员工的第一个和最后一个月的字符串(使用Java 8流):
String[][] monthYears = employeeTransitions.stream()
.collect(Collectors.groupingBy(Employee::getId))
.values()
.stream()
.map(transList -> new String[]{ transList.get(0).getMonthYear(),
transList.get(transList.size() - 1).getMonthYear() })
.toArray(String[][]::new);
我在您的列表Employee
中再添加了一个new Employee(2, "mks", "02-2017", "Hired")
,以使用多个员工ID对其进行测试。上面的代码现在产生:
[[02-2016, 01-2017], [02-2017, 02-2017]]
我们在这里注意到两件事:员工ID没有耦合。对于我在列表中只添加了一条记录的员工,我得到了与第一个和最后一个相同的月 - 年字符串,我认为这是正常的。
要使与员工ID相关联的月份变得复杂得多:
Map<Integer, List<String>> monthYearPerEmployee = employeeTransitions.stream()
.collect(Collectors.groupingBy(Employee::getId))
.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getKey, entry -> {
List<Employee> transitionsForEmployee = entry.getValue();
return Arrays.asList(transitionsForEmployee.get(0).getMonthYear(),
transitionsForEmployee.get(transitionsForEmployee.size() - 1).getMonthYear());
}));
现在我们得到:
{1=[02-2016, 01-2017], 2=[02-2017, 02-2017]}