Tag: 集合

JAXB可以生成ArrayList而不是List吗?

JAXB以List<JAXBElement>生成属性。 有没有什么方法可以生成ArrayList?

问题<T延伸可比较>

我有一个三类:1.class Algorithm ,其中max()在Collection找到最大值: public class Algorithm { public static <T extends Comparable> T max(Collection coll) { T max = coll.iterator().next(); for (T elm : coll) { if (max.compareTo(elm) < 0) max = elm; } return max; } } 2.Class Fruit : public class Fruit implements Comparable { private String name; private int size; public Fruit(String […]

Java Collections何时在使用Collections.addAll()时抛出NullPointerException

在什么条件下Collections.addAll()方法抛出NullPointerException ? 官方文件提到: NullPointerException – 如果指定的collection包含null元素且此collection不允许null元素,或者指定的collection为null 如何确保此“集合不允许null元素” public class CollectionImpl { public void checkList(){ List var1 = new ArrayList(); var1.add(“One”); var1.add(“Two”); var1.add(“Three”); System.out.println(“var1 : ” + var1); try{ if(Collections.addAll(var1,”Four” , “Five” , null , “1”)){ System.out.println(“True”); } } catch(NullPointerException e){ System.out.println(“Caught Null Pointer Exception” + e); } catch(IllegalArgumentException e){ System.out.println(“Caught IllegalArgument Exception” + e); } […]

获取集合中N个最小的项目

我有一个未分类的对象集合[可比较],是否有可能获得列表集合的子列表而无需调用排序? 我正在考虑使用有限容量执行SortedList的可能性,但这看起来不是正确的选项。 我可以很容易地写这个,但我想知道是否还有另一种方式。 我无法修改现有集合的结构。

java8流和多个

我很好奇,如何在java8流中总结多个变量。 Integer wCPU = 0; Double wnetwork = 0.0; Double wMem = 0.0; this.slaContractList.forEach(sla -> { wCPU += sla.getNumberOfCPUs(); wnetwork += sla.getNetworkBandwith(); wMem += sla.getMemory(); }); 但是,这不会编译,因为lambda表达式中的变量应该是final。

重构Java数组和原语(double )到集合和generics(List <List >)

我一直在重构一次性代码,这是我几年前以类似FORTRAN的方式编写的。 大多数代码现在更加有条理和可读。 然而,算法的核心(性能关键)使用1维和2维Java数组,其典型代表是: for (int j = 1; j < len[1]+1; j++) { int jj = (cont == BY_TYPE) ? seq[1][j-1] : j-1; for (int i = 1; i matrix[i][j]) { matrix[i][j] = m; pointers[i][j] = UP; } //… } } 为清楚起见,可维护性以及与其余代码的接口,我想重构它。 但是,在阅读用于数组和Javagenerics的 Java Generics语法 和数字时,我有以下问题: 性能。 该代码计划使用大约10 ^ 8 – 10 ^ 9秒/年,这几乎是可管理的。 我的阅读表明,将double改为Double有时可以在性能上增加3倍。 […]

在两个列表之间进行“包含”的有效方法

我有2个整数列表, l1 = new ArrayList(); l2 = new ArrayList(); 我想找出两者中的重复项目,我有我惯常的做法: – for (Integer i : l1) { if(l2.contains(i)){ System.out.println(“Found!”); } } 我听说contains()是O(n) ,使我的实现O(n^2) 。 有没有更好的方法来做到这一点,(少于O(n^2) )?

Javagenerics放在Map <String,? 扩展List >

有没有办法以类型安全的方式进行以下实现? public void myMethod( Map<String, ? extends List> map ) { map.put(“foo”, Collections.singletonList(“bar”); } 上述实现不起作用。 它需要Map<String, ? super List> Map<String, ? super List>正确编译方法map.put() 。 但是myMethod不会以这种方式接受List的任何子类型。 所以,我必须使用Map<String, ? extends List> Map<String, ? extends List> 。 如何以类型安全的方式解决此问题?

用于上限和下限通配符的Javagenerics

我正在阅读javagenerics,我遇到了一个有趣的查询。 我的问题如下。 对于上限有界的通配符 public static void printList(List list) { for (int i = 0; i < 10; i++) { list.add(i);// gives compilation error } } 对于较低的有界通配符 public static void printList(List list) { for (int i = 0; i < 10; i++) { list.add(i);// successfully compiles } } 我对此感到困惑,因为查看Sun Oracle文档,我理解代码也应该为第1点编译 上限通配符 下界通配符 有人可以帮我理解这个吗?

List <List >是Collection <Collection >的实例吗?

我编写了这个方便的通用函数,用于将集合集合转换为单个集合: public static Set makeSet(Collection<Collection> a_collection) { Iterator<Collection> it = a_collection.iterator(); Set result = new HashSet(); while (it.hasNext()) { result.addAll(it.next()); } return result; } 然后我试着打电话给它: List<List> resultLists = … ; Set labelsSet = CollectionsHelper.makeSet(resultLists); 我收到以下错误: makeSet(java.util.Collection<java.util.Collection>) in CollectionsHelper cannot be applied to (java.util.List<java.util.List>) 现在List 是一个 Collection , String 是 T 那么为什么这不起作用,我该如何解决呢?