Tag: collections

如何在没有ConcurrentModificationException的情况下对Collection 进行交互并修改其项目?

我需要做这样的事…… Collection myCollection; ///assume it is initialized and filled for(Iterator index = myCollection.iterator(); index.hasNext();) { Object item = index.next(); myCollection.remove(item); } 显然这会抛出ConcurrentModificationException … 所以我尝试了这个但是看起来并不优雅/高效并抛出类型安全:从Object到T的未经检查的强制转换警告 Object[] list = myCollection.toArray(); for(int index = list.length – 1; index >= 0; index–) { myCollection.remove((T)list[index]); }

Javafx:使用FXML的可重用集合

我想将一个集合绑定到FXML中的多个ChoiceBox。 然而,我知道如何使用的唯一方法: 是否可以在控制器中声明集合并在FXML中引用它而不是为每个ChoiceBox复制集合?

根据Java中的元素属性将列表拆分为多个子列表

有没有办法将列表拆分为多个列表? 根据元素的特定条件将列表分成两个或多个列表。 final List answerRows= getAnswerRows(………); final AnswerCollection answerCollections = new AnswerCollection(); answerCollections.addAll(answerRows); The AnswerRow has properties like rowId, collectionId 基于collectionId我想创建一个或多个AnswerCollections

如何在null自由设计中实现List,Set和Map?

在大多数情况下,当你可以返回null / empty对象以避免空值时,它很棒,但是像对象一样集合呢? 在Java中,如果在地图中找不到get(key) key ,则Map返回null 。 在这种情况下,我能想到避免null的最好方法是返回一个Entry对象,它可以是EmptyEntry ,也可以包含值T 当然我们避免使用null ,但是如果不检查它是否为EmptyEntry ,现在可以有一个类EmptyEntryexception。 有没有更好的方法来避免Map的get(K) null ? 为了论证,让我们说这种语言甚至没有null ,所以不要说只使用nulls 。

类型参数的数据类型如何在协方差和逆变量中确定?

我正在阅读书籍Java Generics and Collections作者:Maurice Naftalin,Philip Wadler,在前两章中,我的头脑中充满了怀疑。 我无法弄清楚答案。 在通话中: public static void copy(List dst, List src) { for (int i = 0; i < src.size(); i++) { dst.set(i, src.get(i)); } } List objs = Arrays.asList(2, 3.14, “four”); List ints = Arrays.asList(5, 6); Collections.copy(objs, ints); assert objs.toString().equals(“[5, 6, four]”); 在调用函数’copy’期间: 第一个参数:?=对象 第二个参数:?=整数 但是T的数据类型是什么? 基于擦除实现的jvm是如何决定的? 书中说:在Collections.copy(obj,ints)行中 ,类型参数T被认为是Number。 允许调用,因为objs的类型为List […]

Google Collections中的懒惰不可修改列表

我正在寻找一个通用的懒惰不可修改列表实现的一个不错的实现来包装我的搜索结果条目。 任务的不可修改部分很容易,因为它可以通过Collections.unmodifiableList()实现,所以我只需要理清惰性部分。 令人惊讶的是, 谷歌collections品没有提供任何东西; 而来自Apache Commons Collections的LazyList不支持generics。 我发现尝试在google-collections之上构建一些东西,但它似乎是不完整的(例如,不支持size() ),过时的(不用1.0最终编译)并需要一些外部类,但可以用作建立自己的课程的一个很好的起点。 是否有人知道LazyList的任何良好实现? 如果没有,您认为哪个选项更好: 编写我自己的实现,基于google-collections ForwardingList,类似于Peter Maas所做的; 在Commons Collections LazyList周围编写我自己的包装器(包装器只会添加generics,所以我不需要在任何地方进行转换,只能在包装器本身中进行转换); 只需在java.util.AbstractList上面写一些东西; 欢迎任何其他建议。 编辑:解释为什么我需要一个懒惰的列表。 我有一个Lucene搜索结果(TopDocs),它基本上是Lucene文档的一堆指针。 我的搜索结果类将这些指针作为输入并返回由提取的和以其他方式处理的Lucene文档组成的对象列表。 通过将所有内容包装到一个惰性列表中,我希望确保在不必要时不进行昂贵的处理。

Maps.newHashMap与新HashMap返回的HashMap

我第一次尝试番石榴,我发现它真的很棒。 我在Spring jdbc模板上执行几个参数化检索查询。 DAO( AbstractDataAccessObject )中的方法是这样的。 这里没问题。 public Map getResultAsMap(String sql, Map parameters) { try { return jdbcTemplate.queryForMap(sql, parameters); } catch (EmptyResultDataAccessException e) { //Ignore if no data found for this query logger.error(e.getMessage(), e); } return null; } 这是问题所在: 当我用这个方法调用时 getResultAsMap(query, new HashMap(ImmutableMap.of(“gciList”,gciList))); 它很棒。 但是当我这样做的时候 getResultAsMap(query, Maps.newHashMap(ImmutableMap.of(“gciList”,gciList))); 编译器不高兴说 The method getResultAsMap(String, Map) in the type […]

无法理解如何在java中定义List列表

我想了解两个定义之间的区别以及为什么正确的定义是正确的,错误是错误的。 那个显示编译错误的那个 List<List> arr2 = new ArrayList<ArrayList>(); 它给我的错误: try2.java:8: error: incompatible types: ArrayList<ArrayList> cannot be converted to List<List> List<List> arr2 = new ArrayList<ArrayList>(); 工作的那个: List<ArrayList> arr = new ArrayList<ArrayList>(); 注意: 我理解为什么下面这个有效: List arr = new ArrayList(); 编辑-1 : 现在我只想了解List<List> arr2 = new ArrayList<ArrayList>();出了什么问题List<List> arr2 = new ArrayList<ArrayList>();

arraylist和linkedList之间的区别

可能重复: 何时使用LinkedList over ArrayList ? 何时在数组/数组列表中使用链表? 我应该何时使用arrayList,何时应该使用LinkedList? 我什么时候应该使用TreeSet , LinkedHashSet和HashSet ?

ImmutableList不扩展List?

当我深入研究ImmutableList的gs-collection源代码时,它不会扩展java.util.List 。 但是,类javadoc提到All ImmutableList实现必须实现java.util.List 。 为什么必须要求实现实现java.util.List而不是ImmutableList本身来扩展java.util.List ?