小编Col*_*inD的帖子

如何在Java中使用全零来初始化ArrayList?

它看起来似乎arraylist没有做好预备工作:

// presizing 

ArrayList<Integer>() list = new ArrayList<Integer>(60);
Run Code Online (Sandbox Code Playgroud)

之后当我尝试访问它时:

list.get(5) 
Run Code Online (Sandbox Code Playgroud)

它显示null而不是0.有没有办法将所有元素初始化为精确大小的0,就像C++一样?

java collections

149
推荐指数
4
解决办法
12万
查看次数

Gson和反序列化包含数组的对象数组

我试图使用Gson反序列化从我的webservice返回的json字符串

该结构将作为返回TypeDTO[].

这里TypeDTO就像是

int id;
String name;
ArrayList<ItemDTO> items[] 
Run Code Online (Sandbox Code Playgroud)

和ItemDTO就像

int id;
String name;
Boolean valid;
Run Code Online (Sandbox Code Playgroud)

当我调用代码如下

Gson gson = new Gson();
TypeDTO[] mytypes = (TypeDTO[]) gson.fromJson(reply, TypeDTO[].class);
Run Code Online (Sandbox Code Playgroud)

对象内的所有内容都为null

但是,如果我使用的话

JSONArray并且JSONObject从org.json罐中逐个拉出它们,它工作正常并且字段相应地填充.

关于我做错了什么的任何想法?Gson非常快吗?或者我最好坚持我已经工作的东西?

谢谢,大卫

java json gson

64
推荐指数
1
解决办法
13万
查看次数

Java依赖注入:XML或注释

注释变得流行.Spring-3支持它们.CDI严重依赖它们(我不能在没有注释的情况下使用CDI,对吧?)

我的问题是为什么

我听到几个问题:

  1. "它有助于摆脱XML".但是xml有什么不好的?依赖性本质上是声明性的,XML对于声明非常有用(对于命令式编程来说非常糟糕).有了很好的IDE(就像想法一样),编辑和验证xml非常容易,不是吗?

  2. "在许多情况下,每个接口只有一个实现".那不是真的!我系统中的几乎所有接口都具有用于测试的模拟实现.

还有其他问题吗?

现在我的XML优势:

  1. 你可以在任何地方注入任何东西(不仅是带有注释的代码)

  2. 如果我有一个接口的多个实现,我该怎么办?使用限定符?但它迫使我的班级知道它需要什么样的注射.它不适合设计.

基于XML的DI使我的代码清晰:每个类都不知道注入,所以我可以配置它并以任何方式对它进行单元测试.

你怎么看?

java spring dependency-injection guice cdi

35
推荐指数
3
解决办法
9780
查看次数

Java静态序列化规则?

我正在使用一些静态方法和字段进行保存状态序列化.我可以发誓虽然序列化和静态造成了混乱.我应该让所有静态瞬态?膨胀呼叫会恢复静态正常吗?

java serialization static transient

34
推荐指数
2
解决办法
2万
查看次数

有人可以帮我理解Guava CacheLoader吗?

我是Google的Guava库的新手,对Guava的Caching包很感兴趣.目前我已经下载了10.0.1版.在查看文档之后,JUnit测试了源代码,甚至在广泛搜索谷歌之后,我仍然无法弄清楚如何使用缓存包.文档非常简短,好像它是为那些一直使用Guava库的人而不是像我这样的新手编写的.我只是希望有更多关于如何使用缓存包的现实世界的例子.

假设我想使用最近最少使用(LRU)驱逐方法构建10个非过期项目的缓存.所以从api中的示例中,我构建了如下代码:

Cache<String, String> mycache = CacheBuilder.newBuilder()
   .maximumSize(10)
   .build(
       new CacheLoader<String, String>() {
         public String load(String key) throws Exception {
           return something; // ?????
         }
       });
Run Code Online (Sandbox Code Playgroud)

由于CacheLoader是必需的,我必须将它包含在CacheBuilder的构建方法中.但我不知道如何从mycache中返回正确的值.

要将项添加到mycache,我使用以下代码:

mycache.asMap().put("key123", "value123");
Run Code Online (Sandbox Code Playgroud)

要从mycache获取项目,我使用此方法:

mycache.get("key123")
Run Code Online (Sandbox Code Playgroud)

get方法将始终返回从CacheLoader的load方法返回的任何值,而不是从mycache获取值.有人可以告诉我我错过了什么吗?

caching guava

28
推荐指数
1
解决办法
2万
查看次数

Google Guava比Apache Collections"更难"使用吗?

我想让我的团队使用混合技能级别来使用Google Guava.在Guava之前,我已经使用了Apache Collections(或其通用版本).

与Apache Collections相反,Guava在某些方面似乎更强大,但对于经验不足的程序员来说可能不太容易使用.这是我认为可以举例说明的一个领域.

我继承的代码包含很多循环,这些循环基本上是异构值的映射,探测它们的值,进行空检查,然后做一些微不足道的事情:

boolean foo( final List< MapLike > stuff, final String target ) {
  final String upperCaseTarget = target.toUpperCase(0;

  for( MapLike m : stuff ) {
     final Maplike n = (MapLike) m.get( "hard coded string" );
     if( n != null ) {
         final String s = n.get( "another hard code string" );
         if( s != null && s.toUpperCase().equals( upperCaseTarget ) ) {
            return true ;
         }
     }
   return false ;
}
Run Code Online (Sandbox Code Playgroud)

我最初的想法是使用Apache Collections Transformers:

boolean foo( …
Run Code Online (Sandbox Code Playgroud)

java collections guava

26
推荐指数
2
解决办法
5867
查看次数

如何使用Guava的InputSupplier或OutputSupplier api?

我是guava库的新手,我对InputSupplier和OutputSupplier很困惑.根据javadoc,它们分别只是InputStream和OutputStream的工厂.但是,我没有看到这两个接口有什么用处,有没有人能告诉我为什么我应该使用这两个API除了更高的抽象?

java io guava

24
推荐指数
2
解决办法
5826
查看次数

Android上的Guice性能

作为一名Java开发人员,我已经习惯于在应用程序中使用依赖注入.对于Android,我对性能特别警惕.在Android应用中使用Guice有什么性能影响?我假设有一些开销,但它是否足够重要,我应该避免使用Guice?

我对它的使用可能只是将一些共享对象注入到各种活动中.

java android dependency-injection guice

18
推荐指数
3
解决办法
5317
查看次数

如何使用具有非唯一值的Guava进行地图反演?

我们怎么能用番石榴做到这一点?请注意List<K>返回类型中存在,因为许多键可以映射到任何法线贴图中的相同值.

public static <K, V> Map<V, List<K>> inverse(Map<K, V> map){
    Map<V, List<K>> result = new LinkedHashMap<V, List<K>>();
    for (Map.Entry<K, V> entry : map.entrySet()) {
        if(!result.containsKey(entry.getValue())){
            result.put(entry.getValue(), new ArrayList<K>());                
        }
        result.get(entry.getValue()).add(entry.getKey());
    }        
    return result;        
}
Run Code Online (Sandbox Code Playgroud)

BiMap 似乎坚持价值观的独特性,但我没有这种奢侈.

java collections guava

15
推荐指数
2
解决办法
9692
查看次数

删除除""之外的所有空格字符

我认为自己对正则表达式非常好,但是这个看起来非常棘手:我想修剪所有空格,除了空格字符:' '.

在Java中,我尝试过的RegEx是:[\s-[ ]],但这个也脱掉了' '.

更新:

这是我试图从中删除空格的特定字符串:

project team                manage key

注意:它将是"团队"和"管理"之间的字符.编辑此帖子时它们显示为长空格,但在视图模式下查看为单个空格.

java regex

13
推荐指数
2
解决办法
8497
查看次数