Tag: guava

为什么番石榴的ImmutableList有很多重载的()方法?

我只是在看番石榴的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); 有这么多类似的变化的原因是什么?

有没有java.util.concurrent相当于WeakHashMap?

下面的一段代码是否可以使用Collections.synchronizedMap()重写而不保持并发性的正确性? Collections.synchronizedMap(new WeakHashMap<Class, Object>()); 即有什么来自java.util.concurrent可以用来代替? 请注意,只是replace为 new ConcurrentHashMap<Class, Object>(new WeakHashMap<Class, Object>())); 显然是行不通的

如何用另一个列表中的对象的属性创build一个新列表

想象一下,我有一个特定对象的列表: List<Student> 而且我需要在上面的列表中生成另一个包括学生ID的列表: List<Integer> 避免使用循环,是否有可能通过使用Apache集合或番石榴来实现这一点? 哪些方法应该对我的情况有用? 任何帮助将不胜感激,谢谢。

Java中整型的短序列

生成一个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; } …但是它在逃避我 使用番石榴是好的。 更新: 性能分析 由于这个问题已经得到了几个很好的答案,无论是使用原生Java 8和第三方库,我想我会testing所有解决scheme的性能。 第一个testing简单地使用以下方法testing创build一个包含10个元素的列表[1..10] : classicArrayList :在我的问题上面给出的代码(和adarshr的答案基本相同)。 eclipseCollections :使用Eclipse Collections 8.0在Donald的答案中给出的代码。 guavaRange : daveb在下面的答案给出的代码。 从技术上讲,这不会创build一个List<Integer>而是创build一个ContiguousSet<Integer> – 但是由于它实现了Iterable<Integer> ,所以它主要用于我的目的。 intStreamRange :在下面的Vladimir的答案中给出的代码,它使用IntStream.rangeClosed() […]

Java中的双向映射?

我有一个简单的整数到string映射在Java中,但我需要能够轻松地从整数,也是从string整数检索string。 我试过Map,但是它只能从整数中检索string,这是一种方法: private static final Map<Integer, String> myMap = new HashMap<Integer, String>(); // This works one way: String myString = myMap.get(myInteger); // I would need something like: Integer myInteger = myMap.getKey(myString); 有没有一个正确的方法来做到双向? 另一个问题是,我只有一些不变的常量值( 1->"low", 2->"mid", 3->"high" ,所以它不值得去复杂解。

确保元素唯一性的队列?

我正在寻找java.util.Queue或Google集合中类似Queue的东西的实现,但也要确保队列中的每个元素都是唯一的。 (所有进一步插入将不起作用) 这是可能的,还是我必须手工做? 现在我正在使用一个队列,一个LinkedList实现,并且在插入之前检查唯一性。 (我使用一个侧面的Map做这个,在排队之前/之后添加/删除侧面的元素)。 我不喜欢它太多。 任何input是受欢迎的。 如果它不在java.util包中,那么这可能是一个坏主意?

使用重复键映射实现

我想拥有带有重复键的Map,我知道有很多Map的实现(日食显示了我约50),所以我敢打赌,必须有一个允许这个。 我知道它很容易编写自己的地图,但我宁愿使用一些现有的解决scheme。 也许有一些共同点 – collections或谷歌collections?

使用Google Guava库进行Android开发是一个好主意吗?

我参与了Android应用程序的开发,这是一个相当“厚”的Web服务移动客户端。 它与服务器有很大的交stream,但也有很多内在的逻辑。 所以,我决定使用Google Guava库的一些function来简化开发过程。 下面是我非常感兴趣的function列表:不变集合,基础实用程序,集合扩展,函数式编程糖和习语( common.collect和common.base ),基本实用程序( common.primitives ),散列实用程序( common.hash ),并发使用(期货和AsyncFunction )。 我不想在Android中使用的东西: common.cache (请参阅下面的问题), common.eventbus (我们有更好的Android特定的库,比如Otto ), common.io (我们现在可以使用okio for Android) 。 我读到,使用Guava for Android可以显着减慢编译过程,并且还会降低整个运行时间的性能: Android上的Guava Cache性能不佳 (在这种情况下,这是合理的,不需要使用Guava的Androidcaching)和添加Google番石榴到Android项目 – 显着减慢构build 那么,在Android项目中使用Guava库是否有效呢?或者这个库只用于服务器端开发,我应该使用标准解决scheme吗? 任何解释将非常赞赏。