显然,Java本身不支持无符号数字类型,并且不会很快改变(从2002年开始的评论).但是,在使用MySQL等数据库时,它们可能会偶尔派上用场.有很多问题涉及如何模拟无符号数.例如:
所有这些肤浅描述它是如何能做到.但是它有什么实际图书馆去所有的方式和实施适当的包装UByte,UShort,UInteger,ULong?优选地,那些包装器将延伸java.lang.Number并提供类似于其的算术API java.math.BigInteger.
从本文档中可以看出,有很多需要考虑的问题,以及可能出错的问题(例如,如何按位移位,如何乘法等),所以我不想自己做.此外,我不想只使用下一个更高的类型(例如,Short而不是Byte等).我想的概念8-bit,16-bit,32-bit,64-bit号码保留,与数据库提供最好的交互,例如.
更新:
在你回答之前!考虑一下我知道所有的解决方法,但我真的很想拥有具有上述属性的4种类型.也许有人已经这样做了,所以这就是我问的原因.无需提醒我解决方法.
在C#中,您可以将lambda表达式包含在表达式树对象中,然后可以解析它.我想知道这在Java中是否也可行?
我正在寻找的是做这样的事情:
BooksRepository.getAll()
.where(b -> b.getIban() == "SomeIban")
.and(b -> b.getAuthor() == "SomeAuthor"); //etc.
Run Code Online (Sandbox Code Playgroud)
然后BooksRepository应该以某种方式将该查询转换为基于指定为lambdas的谓词的以下RESTful API请求:
GET http://mylibrary.com/books?Iban=SomeIban&Author=SomeAuthor
Run Code Online (Sandbox Code Playgroud)
然后将结果返回给客户端.如果在Java中甚至可以实现这一点?
我可以在C#中做到这一点:
int CheetahNumber = 77;
Animal Cheetah = Model.Animals
.Where(e => e.AnimalNo.Equals(CheetahNumber))
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
例如在Java中我有 ArrayList<Animal> Animals
我怎样才能查询这样的ArrayList?谢谢.
可能重复:
LINQ的Java等价物是什么?
有很多问题询问LINQ是否存在Java等价物.但是他们中的大多数都错误地指出什么都没有.
在阅读" LINQ的Java等价物是什么? "后,我想知道,是(小写)语言集成查询 - 换句话说,是使用简洁语法在对象集合或外部存储上执行查询的能力 -成为大多数通用语言的未来之路?或者LINQ是一项有趣的技术,仍将局限于微软的语言?介于两者之间?
编辑:我不知道其他语言,但正如我所知,LINQ既不是史无前例也不是唯一的.LINQ中的想法 - lambdas和查询 - 存在于其他语言中,并且这些想法似乎正在传播.
我正在将程序从C#转换为Java.在C#代码中,开发人员使用Tuple.我需要将这个C#代码翻译成Java代码.因此,Java是否具有与C#的元组等效的变量类型?
让我们看一下这个示例C#代码:
List<int> numbers = new List<int>() { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
int numCount = numbers.Where(n => n < 3 || n > 7).Count();
Run Code Online (Sandbox Code Playgroud)
我对Java最相似的东西很着迷,显然不需要编写幻想的for / foreach循环来迭代集合。
据我所知,在Java中没有确切的linq equivalnet,但是我仍然是Java编程的初学者,所以您有什么可以推荐给我的吗?我实际上正在寻找在Java中实现相同结果的最紧凑,最优雅的方法
[添加]因此,感谢所有答复。但是,我需要在Android上使用它,但似乎不行。有什么解决办法吗?
(很抱歉,它是重复的)
[添加]有人尝试过吗? http://sourceforge.net/projects/streamsupport/
问题,但在C#.那么Java有C#的命令吗?我需要它用于Matches-SearchTerm-Files-relationship.
foreach(var i in BunchOfItems.SelectMany(k => k.Items)) {}
Run Code Online (Sandbox Code Playgroud)
[为什么不for循环?] 我已经在嵌套for循环中完成了这样的结构,但它们很快变得臃肿.所以我更喜欢像上面这样的更多傻瓜.
public static Stack<Integer[]> getPrintPoss(String s,File f,Integer maxViewPerF)
{
Stack<File> possPrint = new Stack<File>();
Integer[] poss = new Integer[4]();
int u,size;
for(File f:files)
{
size = f2S(f).length();
u = Math.min(maxViewsPerF,size);
for(int i=0; i<u;i++)
{
// Do something --- bloated, and soon out of control
// wants more succintly
}
}
return possPrint;
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个像下面这样的豆子.
class Customer{
private String code;
private String name;
private Integer value;
//getters setters omitted for brevity
}
Run Code Online (Sandbox Code Playgroud)
然后从一个方法我得到一个List<Customer>回来.现在让我们说我想从列表中获取所有成员"名称"的列表.显然,我可以自己遍历并构建一个List<String>元素"名称".
但是,我想知道是否有一种捷径或更有效的方式来解决这种技术.例如,如果我想获取Map对象中所有键的列表,我会得到map.keySet().这条线上的东西是我想要找到的东西.
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编写).