我试图通过使用带有谓词的Linq来计算出数组在阵列中出现的最大值的次数.Count().但是,我不完全明白该怎么做.从阅读MSDN的例子我认为我理解,但显然不是!
这就是我的想法:
string[] test = { "1", "2", "3", "4", "4" };
string max = test.Max();
Label1.Text = test.Count(p => p == max);
Run Code Online (Sandbox Code Playgroud)
但那没用.所以我尝试将max更改为整数以查看是否可行,但这也不起作用.
Lambdaj(以及其他一些类似的库)提供了一个having函数,它允许我像这样定义谓词(例如直接来自lambdaj Features页面):
List<Person> oldFriends =
filter(having(on(Person.class).getAge(), greaterThan(30)), meAndMyFriends);
Run Code Online (Sandbox Code Playgroud)
我非常希望能够使用简单的字符串语法定义我的Java谓词对象"age > 30"- 类似于SQL where子句 - 所以上面的过滤器变成了类似的东西:
List<Person> oldFriends =
filter(having(Person.class, "age > 30"), meAndMyFriends);
Run Code Online (Sandbox Code Playgroud)
这样的库是否存在,或者是否有人可以为我自己构建一个查询解析部分推荐一些构建块?我实际上并不介意它创造了什么样的谓词(hamcrest,guava等).
在我的头脑中,我可以想到它支持的许多事情:平等和不平等,自定义和原始类型,和/或/不,括号,LIKE(对于字符串),in(...)enum的解释名称,属性的属性.
这是一个更复杂的谓词的例子:
"salesCount > 10 and (country='UK' or city='New York')
and attitude not in (MENACING, RUDE)
and product.name <> 'Widget' "
Run Code Online (Sandbox Code Playgroud)
(此示例假定谓词应用于的SalesPerson类(比如一个类)具有方法getSalesCount(),getCountry()和getCity(),以及getAttitude()(返回枚举).它还具有属性getProduct,返回带有getName方法的类型.
动机:我们有一个客户端 - 服务器系统,它有多种语言API(目前是Java和C#); 我正在寻找一种语言无关的方式让用户指定一个谓词,该谓词过滤一组对象,其中的确切内容只有服务器进程知道(用Java编写).
在Java中,我有一大堆对象(~10,000个对象),比方说Set<Person> cityInhabitants.我还有一个大的谓词集合(~1,000个谓词),它们将用于过滤掉任何Person匹配的谓词.例如,谓词可能是
person.getName().equals("ugly name1")person.getName().equals("ugly name2")person.getAge() < 18.此要求需要以下挑战:
这些挑战有哪些解决方案?有没有可以帮助的图书馆?
我想用下一个subpredicates设置复合谓词:
我读NSCompoundPredicate文档,但不理解不够清晰-这可能在所有使用都+ andPredicateWithSubpredicates:和+ orPredicateWithSubpredicates:他们在一个组合成一个谓语获取请求?
predicate objective-c nspredicate nsfetchedresultscontroller
我正在尝试在 bool 向量上使用 any_of 函数。any_of 函数需要一个返回布尔值的一元谓词函数。但是,当输入到函数中的值已经是我想要的 bool 时,我无法弄清楚要使用什么。我会猜测一些函数名称,如“logical_true”或“istrue”或“if”,但这些似乎都不起作用。我在下面粘贴了一些代码以显示我正在尝试做什么。提前感谢您的任何想法。 - 克里斯
// Example use of any_of function.
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
using namespace std;
int main(int argc, char *argv[]) {
vector<bool>testVec(2);
testVec[0] = true;
testVec[1] = false;
bool anyValid;
anyValid = std::find(testVec.begin(), testVec.end(), true) != testVec.end(); // Without C++0x
// anyValid = !std::all_of(testVec.begin(), testVec.end(), std::logical_not<bool>()); // Workaround uses logical_not
// anyValid = std::any_of(testVec.begin(), testVec.end(), std::logical_true<bool>()); // No such thing as logical_true
cout << "anyValid = " << …Run Code Online (Sandbox Code Playgroud) 我有一个实体服务,我需要根据id的列表过滤子实体的集合.我的服务有一个公共方法,它接收父实体的id和他的一些子实体的id列表.
默认情况下,我知道JPA将获取所有相关实体,这是他的实际行为.但我们需要研究服务的性能.因此,我没有获得所有相关实体并使用多个循环过滤它们(过滤id和其他属性,如date属性),我想只得到我的请求所关注的实体.
我的父实体
@Entity
@Table(name = "MyParent")
public class MyParentEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "SEQ_MyParent")
@SequenceGenerator(allocationSize = 1, name = "SEQ_MyParent",
sequenceName = "SEQ_MyParent")
@Column(name = "ID_PARENT")
private Long id;
@OneToMany(mappedBy = "myParent", cascade = CascadeType.ALL,
fetch = FetchType.EAGER, orphanRemoval = true)
private final List<MyChildEntity> myChild = new ArrayList<MyChildEntity>();
}
Run Code Online (Sandbox Code Playgroud)
我的孩子实体
@Entity
@Table(name = "MyChild")
public class MyChildEntity {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE,
generator = "SEQ_MyChild")
@SequenceGenerator(allocationSize = 1, name = "SEQ_MyChild",
sequenceName = "SEQ_MyChild")
@Column(name = …Run Code Online (Sandbox Code Playgroud) 让我直截了当.我在一个项目中使用Spring Data JPA和QueryDSL,我自己也无法弄清楚这一点.
我在静态方法中有QueryDSL谓词可以接受参数,如果参数不正确,它应该返回"空谓词":
public static BooleanExpression byWhateverId(Long whateverId) {
if(whateverId == null) return [insert magic here];
// if parameter is OK return usual predicate
return QClass.property.whateverId.eq(whateverId);
}
Run Code Online (Sandbox Code Playgroud)
现在我希望能够使用AND/OR操作符链接这些谓词:
someRepository.findAll(byWhateverId(someParam).and(bySomethingElseId(1));
Run Code Online (Sandbox Code Playgroud)
这里的问题是,此时我不知道'someParam'是否为空(当然我可以查看,但那是很多IF).我也知道我可以使用BooleanBuilder类,但这看起来也像很多不需要的代码.
有谁知道可以插入什么而不是"[在这里插入魔法]"??? 或者也许我在某处丢失某些东西......
谢谢!
我发现了与我类似的问题,但没有一个解释如何为数据框的每一列执行此操作。
我有一个这样的数据框:
x1 = seq(12, 200, length=20)
x2 = seq(50, 120, length=20)
x3 = seq(40, 250, length=20)
x4 = seq(100,130, length=20)
x5 = seq(10, 300, length=20)
df = data.frame(V1=x1, V2=x2, V3=x3, V4=x4, V5=x5)
Run Code Online (Sandbox Code Playgroud)
现在我想获取每列大于 120 的值的数量。
我试过了:
nrow(df[,1] >120)
Run Code Online (Sandbox Code Playgroud)
那没有用,它说 0,但它不是真的,而且我想自动完成所有列。
我有一个布尔类型的方法,它返回谓词类型事件的数据流,我只想过滤掉最新的事件。
public boolean hascompletededucation(LocalDate asOnDate) {
Predicate<Courses> predicate = e -> ((e.hasincident1(asOnDate));
return f != null && f.stream().anyMatch(predicate);
Run Code Online (Sandbox Code Playgroud)
我试过
return f != null && f.stream().filter(predicate)
Run Code Online (Sandbox Code Playgroud)
有点像这样,但我想从方法 hasincident1 中获取最新事件。
方法 hasincident1 如下:
public boolean hasincident1(LocalDate asOnDate) {
Predicate<Incident> completeincident= e -> !e.isCancelled() && e.isCompleted()
&& (e.getDate().toLocalDate().isBefore(asOnDate)
|| e.getDateIncident().toLocalDate().isEqual(asOnDate));
return incidentList != null && incidentList.stream().anyMatch(completeincident);
}
Run Code Online (Sandbox Code Playgroud) 假设我们想要计算NaNjavascript 数组中的 。我们可以用
let arr = [...Array(100)].map( (a,i) => i %10==0 ? NaN : i )
console.log(arr)
> [NaN, 1, 2, 3, 4, 5, 6, 7, 8, 9, NaN, 11, 12, 13, 14, 15, 16, 17, 18, 19, NaN, 21, 22, 23, 24, 25, 26, 27, 28, 29, NaN, 31, 32, 33, 34, 35, 36, 37, 38, 39, NaN, 41, 42, 43, 44, 45, 46, 47, 48, 49, NaN, 51, 52, 53, 54, 55, 56, 57, 58, 59, …Run Code Online (Sandbox Code Playgroud) predicate ×10
java ×3
arrays ×1
boolean ×1
c# ×1
c++ ×1
collections ×1
criteria-api ×1
dataframe ×1
el ×1
java-8 ×1
java-stream ×1
javascript ×1
jpa ×1
lambda ×1
lambdaj ×1
linq ×1
max ×1
nspredicate ×1
objective-c ×1
querydsl ×1
r ×1
row ×1
spring ×1
spring-data ×1
sql ×1
stl ×1