标签: apache-commons-collection

如何将集合转换为列表?

我使用TreeBidiMap来自Apache的集合库.我想对这些值进行排序doubles.

我的方法是Collection使用以下方法检索一个值:

Collection coll = themap.values();
Run Code Online (Sandbox Code Playgroud)

这自然很好.

主要问题:我现在想知道如何转换/转换(不确定哪个是正确的)coll到一个List可以排序?

然后我打算遍历排序的List对象,该对象应按顺序从TreeBidiMap(themap)中使用themap.getKey(iterator.next())迭代器将在列表上的位置获取相应的键doubles.

java sorting collections list apache-commons-collection

277
推荐指数
7
解决办法
48万
查看次数

箭头操作符' - >'在Java中做什么?

在搜索一些代码时,我遇到了箭头操作符,它到底是做什么的?我以为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

151
推荐指数
5
解决办法
17万
查看次数

Java Commons Collections removeAll

CollectionUtils :: removeAll()Commons Collections 3.2.1

我一定是要疯了,因为看起来这个方法正在做与文档状态相反的方法:

从集合中删除remove中的元素.也就是说,此方法返回一个集合,其中包含c中未删除的所有元素.

这个小JUnit测试

@Test
public void testCommonsRemoveAll() throws Exception {
    String str1 = "foo";
    String str2 = "bar";
    String str3 = "qux";

    List<String> collection = Arrays.asList(str1, str2, str3);
    System.out.println("collection: " + collection);

    List<String> remove = Arrays.asList(str1);
    System.out.println("remove: " + remove);

    Collection result = CollectionUtils.removeAll(collection, remove);
    System.out.println("result: " + result);
    assertEquals(2, result.size());
}
Run Code Online (Sandbox Code Playgroud)

失败了

java.lang.AssertionError:expected:<2>但是:<1>

和打印

collection: [foo, bar, qux] 
remove: [foo] 
result: [foo]
Run Code Online (Sandbox Code Playgroud)

从我读到的文档我应该期待[bar, qux].我错过了什么?

java collections apache-commons-collection

31
推荐指数
1
解决办法
8326
查看次数

apache.commons.collections.CollectionUtils是否有可行的通用替代方案?

有可行的通用版本org.apache.commons.collections.CollectionUtils吗?如果没有,为什么不呢?这似乎是一个显而易见的需求.或者Java社区是否放弃了功能编码,直到Java 17中添加了闭包?

java collections apache-commons-collection

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

使用谓词的java中的CollectionUtils

我有一个List<Object>,我想返回它找到的第一个与谓词匹配的值.

我发现我可以使用CollectionUtils.find(collection,predicate)(Apache commons).假设它Object包含一个名为:的整数变量value,我如何在谓词中指定该值可以1,2,3,4,5并丢弃那些不匹配的变量.有可能做'包含'.

也没有使用java 8所以无法做流.

java collections apache-commons apache-commons-collection

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

在将BeanPredicate与EqualPredicate进行比较时,common-collections 4.1会导致编译问题

将公共集合从3.2.2升级到4.1后,我遇到了比较BeanPredicate和EqualsPredicate集合的问题.BeanPredicate来自commons-beanutils jar,而EqualsPredicate来自commons-collection.jar.

BeanPredicate namePredicate = new BeanPredicate(propertyName, new EqualPredicate("someString"));
Run Code Online (Sandbox Code Playgroud)

根据最新的commons-collection jar 4.1,EqualsPredicate Constructor接受参数化类型

public EqualPredicate(T object)
{
 this(object, null);
}
Run Code Online (Sandbox Code Playgroud)

不是3.2.2中的对象

public EqualPredicate(Object object)
{
this.iValue = object;
}
Run Code Online (Sandbox Code Playgroud)

BeanPredicate没有参数化类型,就像<T>它的构造函数那样,为什么我得到编译问题而且无法在这两个谓词之间建立关系.我看到最新的commons-beanUtils 1.9.3 BeanPredicate jar也有BeanPredicate构造函数没有参数化.我尝试给类型,但它不工作.如何解决这个问题任何帮助将不胜感激.

java apache-commons-collection apache-commons-beanutils

9
推荐指数
0
解决办法
527
查看次数

通过Person对象的getName()属性将Person对象列表转换为单独的String

XXXUtils我可以做的地方

String s = XXXUtils.join(aList, "name", ",");
Run Code Online (Sandbox Code Playgroud)

哪个"name"是来自对象的JavaBeans属性aList.

我发现只有StringUtils具有join的方法,但它只是一个变换List<String>成一个分离String.

就像是

StringUtils.join(BeanUtils.getArrayProperty(aList, "name"), ",")
Run Code Online (Sandbox Code Playgroud)

这很快,值得使用.BeanUtils会抛出2个已检查的异常,所以我不喜欢它.

java apache-commons separator apache-stringutils apache-commons-collection

8
推荐指数
2
解决办法
3972
查看次数

null-safe Collection包含方法

contains在Java集合上执行null-safe的最佳方法是什么?

换一种说法 -

 if (collection != null && collection.contains(x))
Run Code Online (Sandbox Code Playgroud)

我希望Apache commons-collections有类似的东西CollectionUtils.contains(collection, x),如果集合为null,就会返回false,因为有size(),像空集合一样处理null.

然而,似乎没有这样的事情 - 我只是想念它吗?

java collections apache-commons-collection

8
推荐指数
1
解决办法
7978
查看次数

将MapIterator返回的MultiKey断开到各个键中

我正在使用Apache Commons Collections创建一个MultiKeyMap,它将存储两个具有一个相应值的键,然后使用MapIterator遍历地图.我遇到的问题是我需要将MapIterator返回的密钥分解回单个密钥而不是单个"复合".虽然我可以分割包含"复合"键的字符串或使用反射,但这些选项似乎都不是很优雅.

为了模拟问题,我创建了以下示例代码

MultiKeyMap multiKeyMap = new MultiKeyMap();

multiKeyMap.put("Key 1A","Key 1B","Value 1");
multiKeyMap.put("Key 2A","Key 2B","Value 2");
multiKeyMap.put("Key 3A","Key 3B","Value 3");

MapIterator it = multiKeyMap.mapIterator();

while (it.hasNext()) {
    it.next();
    System.out.println(it.getKey());
    System.out.println(it.getValue());
}
Run Code Online (Sandbox Code Playgroud)

it.getKey()返回多键[键3A,3B键],但我想要做的就是分配键单个变量,像myKey1 = it.getKey().keys[0]myKey2 = it.getKey().keys[1],但是我无法找到在JavaDoc任何实现这一目标.

是否可以将MapIterator返回的键分解为各个键而不使用反射或操纵it.getKey()返回的字符串?

java apache-commons apache-commons-collection

5
推荐指数
1
解决办法
3266
查看次数

发现两个列表之间的区别

在java中假设我有2个列表

List<Object1> list1
List<Object2> list2

object1.getName(); returns a String
object2.getName(); return a String
Run Code Online (Sandbox Code Playgroud)

有没有办法比较名称,并得到两个列表的差异

这些2个对象在第三方库中定义,我不能覆盖equals和compareto方法

我赞成googles Guava或commons集合库

Sets.symmetricDifference(Set1, Set2)要求传入2,即使我使用Sets.newHashSet(lis1)和Sets.newHashSet(lis2)创建两个集合,但它们仍然在集合中具有不同类型的对象.

或者在公共中CollectionUtils.disjunction(lis1, list2),列表仍然必须包含相同的对象类型

没有做2个昂贵的for循环,还有其他方法吗?

java apache-commons guava apache-commons-collection

5
推荐指数
1
解决办法
3387
查看次数