我只是看着番石榴ImmutableList,我注意到这个of()方法超载了12次.
在我看来,他们所需要的只是:
static <E> ImmutableList<E> of();
static <E> ImmutableList<E> of(E element); // not even necessary
static <E> ImmutableList<E> of(E... elements);
有这么多类似变化的原因是什么?
正在寻找Guava的ProGuard配置,它将进行模糊处理和优化,因为网站上提供的默认配置不会.
不仅我不能让它导出我的apk,我一直得到:
Warning: com.google.common.collect.MinMaxPriorityQueue: 
    can't find referenced field 'int UNSET_EXPECTED_SIZE' in class  
    com.google.common.collect.MinMaxPriorityQueue$Builder
You should check if you need to specify additional program jars.
假设我们有一个项目集合:
class Item {
    public String title;
    public int price;
}
List<Item> list = getListOfItems();
我想从Guava库中获得一个具有最大价格的物品(订购,我推测).我的意思是类似于这个Groovy代码:
list.max{it.price}
我怎么做?效率如何?
我下载了Eclipse Kepler,并尝试从其更新站点安装M2Eclipse .
选择Maven Integration for Eclipse后,我单击Next并出现以下错误:
缺少要求:Maven Integration for Eclipse 1.5.0.20140606-0033(org.eclipse.m2e.core 1.5.0.20140606-0033)需要'bundle com.google.guava [14.0.1,16.0.0)'但无法找到
所以我通过互联网搜索了解如何安装Guava Eclipse插件.有人说它来自Eclipse市场,但无法下载.我下载了二进制文件,并尝试将其复制到Eclipse的插件目录中.结果仍然相同.
cp ~/Downloads/guava-16.0.1.jar /Applications/eclipse/plugins/com.google.guava_16.0.1.v1234.jar
如何为开普勒安装m2e插件?
我想分组列表的元素.我现在这样做:
public static <E> List<List<E>> group(final List<E> list, final GroupFunction<E> groupFunction) {
    List<List<E>> result = Lists.newArrayList();
    for (final E element : list) {
        boolean groupFound = false;
        for (final List<E> group : result) {
            if (groupFunction.sameGroup(element, group.get(0))) {
                group.add(element);
                groupFound = true;
                break;
            }
        }
        if (! groupFound) {
            List<E> newGroup = Lists.newArrayList();
            newGroup.add(element);
            result.add(newGroup);
        }
    }
    return result;
}
public interface GroupFunction<E> {
    public boolean sameGroup(final E element1, final E element2);
}
有没有更好的方法来做到这一点,最好是使用番石榴?
Iterables提供了两种方法getLast 
 public static <T> T getLast(Iterable<T> iterable);
 public static <T> T getLast(Iterable<T> iterable, @Nullable T defaultValue);
但只有一个 getFirst
 public static <T> T getFirst(Iterable<T> iterable, @Nullable T defaultValue);
是否存在破坏对称性的设计/实施原因?
在研究某些高吞吐量数据结构的内存基准测试时,我意识到我只能使用ImmutableMap一点点重构.  
认为这将是一个改进,我把它扔进了组合中并且惊讶地发现它不仅比它HashMap在单线程环境中慢,而且看起来一直比它慢ConcurrentHashMap!
你可以在这里看到完整的基准:https://bitbucket.org/snippets/dimo414/89K7G
测试的内容非常简单,需要花费多长时间才能获得地图中可能存在的大量随机字符串.
public static void timeAccess(Map<String,String> map) {
    Random rnd = new Random(seed);
    int foundCount = 0;
    long start = System.nanoTime();
    for(int i = 0; i < loop; i++) {
        String s = map.get(RndString.build(rnd));
        if(s != null)
            foundCount++;
    }
    long stop = System.nanoTime() - start;
    System.out.println("Found "+foundCount+" strings out of "+loop+" attempts - "+
        String.format("%.2f",100.0*foundCount/loop)+" success rate.");
    System.out.println(map.getClass().getSimpleName()+" took "+
        String.format("%.4f", stop/1_000_000_000.0)+" seconds.");
    System.out.println();
}
对a HashMap,a ConcurrentHashMap …
我有直接的List list1. List<String> list = Ordering.natural().sortedCopy(asu2);
如何改变秩序.我不知道如何从extends类重写方法,请用例子写或清楚说明.
我想从网络应用中的各个地方收集一些指标.为了简单起见,所有这些都是计数器,因此唯一的修饰符操作是将它们递增1.
增量将是并发的并且经常是.读取(转储统计信息)是一种罕见的操作.
我在考虑使用ConcurrentHashMap.问题是如何正确递增计数器.由于地图没有"增量"操作,我需要首先读取当前值,增加它而不是将新值放在地图中.没有更多代码,这不是原子操作.
是否有可能在没有同步的情况下实现这一点(这会破坏ConcurrentHashMap的目的)?我需要看看番石榴吗?
谢谢你的任何指示.
PS
 
有一个关于SO的相关问题(在Java中增加Map值的最有效方法)但是侧重于性能而不是多线程
更新
 
对于那些通过搜索同一主题到达这里的人:除了下面的答案之外,还有一个有用的演示文稿,它偶然涵盖了相同的主题.见幻灯片24-33.
有没有办法抑制此警告:
MyClass object = null;
/*Some code that 'might' set this object but I know it will*/      
Preconditions.checkNotNull(object); 
//when "assert object != null" is used here no warning is shown
merged.setName(dRElement.getName());
//"May produce 'java.lang.NullPointerException'" warning here 
我正在使用IntelliJ IDEA 10.5,我知道这个警告是不必要的,但是我想在这里压制它并避免切换检查.
guava ×10
java ×8
list ×2
android ×1
api-design ×1
benchmarking ×1
collections ×1
concurrency ×1
eclipse ×1
function ×1
grouping ×1
hashmap ×1
inspection ×1
iterable ×1
m2e ×1
maven ×1
overloading ×1
performance ×1
proguard ×1
sorting ×1