如何在Java中将字节大小转换为人类可读的格式?像1024应该变成"1 Kb"而1024*1024应该变成"1 Mb".
我有点厌倦为每个项目编写这个实用工具方法.Apache Commons中是否有任何静态方法?
Java有哪些好的电子邮件地址验证库?是否有公共验证器的替代品?
我一直在寻找Java中的双向映射实现,并偶然发现了这两个库:
两者都是免费的,具有我正在寻找的双向地图实现(Apache中的BidiMap,Google中的BiMap),几乎相同的大小(Apache 493 kB,Google 499 kB)[编辑:不再是真的!]并且似乎在各方面都和我很相似.
我应该选择哪一个,为什么?是否有其他等效替代方案(必须是免费的并至少具有双向映射)?我正在使用最新的Java SE,所以不需要人为地限制Java 5或类似的东西.
我很想知道,人们在这里想到使用
org.apache.commons.lang.builder EqualsBuilder/ HashCodeBuilder
实现equals/ hashCode?这比写自己更好吗?它与Hibernate相处得好吗?你怎么看?
在搜索一些代码时,我遇到了箭头操作符,它到底是做什么的?我以为Java没有箭头操作符.
return (Collection<Car>) CollectionUtils.select(listOfCars, (arg0) -> {
return Car.SEDAN == ((Car)arg0).getStyle();
});
Run Code Online (Sandbox Code Playgroud)
详细信息:Java 6,Apache Commons Collection,IntelliJ 12
更新/答案:事实证明IntelliJ 12支持Java 8,它支持lambdas,并且"折叠"Predicates并将它们显示为lambda.下面是"未折叠"的代码.
return (Collection<Car>) CollectionUtils.select(listOfCars, new Predicate() {
public boolean evaluate(Object arg0) {
return Car.SEDAN == ((Car)arg0).getStyle();
}
});
Run Code Online (Sandbox Code Playgroud) java intellij-idea apache-commons java-8 apache-commons-collection
我试图模仿Java中这个curl命令的功能:
curl --basic --user username:password -d "" http://ipaddress/test/login
Run Code Online (Sandbox Code Playgroud)
我使用Commons HttpClient 3.0编写了以下内容但不知何故最终500 Internal Server Error从服务器获取了一个.有人能告诉我,如果我做错了吗?
public class HttpBasicAuth {
private static final String ENCODING = "UTF-8";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
HttpClient client = new HttpClient();
client.getState().setCredentials(
new AuthScope("ipaddress", 443, "realm"),
new UsernamePasswordCredentials("test1", "test1")
);
PostMethod post = new PostMethod(
"http://address/test/login");
post.setDoAuthentication( true );
try {
int status = client.executeMethod( post );
System.out.println(status + "\n" + …Run Code Online (Sandbox Code Playgroud) 我知道曾经有一种方法可以通过apache commons来获取它,如下所示:http: //hc.apache.org/httpclient-legacy/apidocs/org/apache/commons/httpclient/HttpMethod.html 以及此处的示例:
http://www.kodejava.org/examples/416.html
但我相信这已被弃用了.是否还有其他方法可以在java中生成http get请求并将响应主体作为字符串而不是流来获取?
我们目前使用apache集合,字符串utils等.我需要决定是否应该从apache基础实现切换.
重要的标准是开发人员易于使用.性能/内存使用对我们来说还不是一个重要的问题.发展速度是此时的关键标准.
我很欣赏有关番石榴开发人员的生活变得如此轻松的观点.
我正在构建一个小型Java应用程序,并希望使用logback进行日志记录.
我的应用程序依赖于通过其进行日志记录的旧项目
org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1
Run Code Online (Sandbox Code Playgroud)
......所以我的计划是使用
org.slf4j | jcl-over-slf4j | 1.5.6
Run Code Online (Sandbox Code Playgroud)
...将JCL日志记录重定向到
org.slf4j | slf4j-api | 1.6.0
Run Code Online (Sandbox Code Playgroud)
......最终到了
ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22
Run Code Online (Sandbox Code Playgroud)
所以我的应用程序可以通过其slf4j API登录logback,而旧的库代码可以通过重定向登录到同一位置.
唉,这导致了
java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)
Run Code Online (Sandbox Code Playgroud)
我已经在其中一些罐子上尝试过更高和更低的版本号,并且还通过API文档等进行挖掘...但我无法找到并解决问题.
请帮忙?
虽然logback被认为是"战略"日志框架,但我有一些余地,我最终使用哪种日志记录机制.我希望使用logback或log4j,我肯定希望通过常见配置将旧项目的日志记录合并到"新"日志框架最终的任何内容中.
是否有一种简短而甜蜜的方式来生成一个List<Integer>或者一个 Integer[]或者int[]从某个start值到end值的连续值?
也就是说,短于,但相当于以下1:
void List<Integer> makeSequence(int begin, int end) {
List<Integer> ret = new ArrayList<>(end - begin + 1);
for (int i=begin; i<=end; i++) {
ret.add(i);
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
番石榴的使用很好.
更新:
由于这个问题已经收到了几个很好的答案,无论是使用本机Java 8还是第三方库,我都认为我会测试所有解决方案的性能.
第一个测试只是[1..10]使用以下方法测试创建10个元素的列表:
List<Integer>而是创造一个ContiguousSet<Integer>- 但由于它Iterable<Integer>按顺序实现,它主要用于我的目的.IntStream.rangeClosed()- 这是在Java 8中引入的.apache-commons ×10
java ×10
guava ×3
collections ×2
arrays ×1
email ×1
equals ×1
formatting ×1
hashcode ×1
hibernate ×1
http ×1
java-8 ×1
logback ×1
slf4j ×1
validation ×1