Tag: set

如何在JSF中使用带有UIData的java.util.Set。 特别是h:数据表?

我知道UIData不支持这个,我理解为什么,但这对于使用JPA和JSF的人来说应该是一个常见问题,因为在映射M2M O2M关系时,Sets是优秀的集合。 我知道我需要创建一些结构,以便在需要时将我的属性转换为列表,但在广泛搜索这个问题后,我能找到的原因是它不起作用的原因,并且只是解决方案的轻微提示。 我相信答案是创建一个ELResolver来处理这个问题,但是它们的结构以及它们的工作方式令我感到困惑,我不明白为什么我需要成为一个写这个的人,这是一个常见的问题,当然有人有写了一个ELResolver来做这个? 我已经找到了关于这个主题的这篇文章,但我无法复制它,因为较新的JSF似乎不允许它: http://techblog.bozho.net/?p=28&cpage=1#comment-13700 和这个: http://www.jroller.com/mert/entry/settolistpropresolver_for_jsf_el 其中充斥着已弃用的代码,因为它是ELResolver之前的代码。 但我无法找到如何实现ELResolver来做到这一点。 有人能指出一些有用的代码或至少类似的东西可以帮助我理解如何使用ELResolver吗?

Java:有一种简单,快速的方法可以将AND,OR或XOR组合在一起吗?

也就是说,如果我有两个或更多集合,我想返回一个包含以下任一集合的新集合: 每组中的所有元素都有共同点(AND)。 每组(OR)的所有元素总数。 每组的所有元素都是独一无二的。 (XOR)。 是否有一种简单的,预先存在的方法可以做到这一点? 编辑:这是错误的术语,不是吗?

具有自定义相等标准的Java HashSet?

我正在寻找类似于Java TreeSet在实例化时接收自定义比较器的能力,所以我不需要使用对象的默认相等(和哈希码)标准。 我能想到的最接近的是将我的对象包装在一个私有的自定义类中,但这看起来很糟糕:(这在编程时最终会成为一种反复出现的主题,所以我想知道是否已有可供我们使用的东西。也许在公共图书馆? 谢谢

在迭代期间更改HashMap键

是否可以在迭代期间更改同一个HashMap实例的键? 因为映射条目集没有方法entry.setKey()。 现在我能想到的是创建另一个HashMap … MultipartParsingResult parsingResult = parseRequest(request); Map mpParams = parsingResult.getMultipartParameters(); Map mpParams2 = new HashMap(); Iterator<Entry> it = mpParams.entrySet().iterator(); while (it.hasNext()) { Entry entry = it.next(); String name = entry.getKey(); if (name.startsWith(portletNamespace)) { mpParams2.put(name.substring(portletNamespace.length(), name.length()), entry.getValue()); } else { mpParams2.put(name, entry.getValue()); } }

为什么我的TreeSet不会添加除第一个元素之外的任何内容?

我在表单中有几个数组: private static String[] patientNames = { “John Lennon”, “Paul McCartney”, “George Harrison”, “Ringo Starr” }; 然后我像这样制作一个TreeSet: TreeSet patTreeSet = new TreeSet(); 患者是另一类产生“患者”对象的人。 然后我遍历我的数组中的每个元素来创建几个患者并将它们添加到我的patTreeSet如下所示: for(int i = 0; i< patientNames.length; i++){ Date dob = date.getDate("MM/dd/yyyy", patientBirthDates[i]); Patient p = new PatientImpl(patientNames[i], patientSSN[i], dob); patTreeSet.add(p); } 但是当我去检查我的patTreeSet.size()时它只返回“1” – 这是为什么? 我知道我的对象运行良好,因为当我尝试使用ArrayList做同样的事情时,一切正常。 所以我猜我正在使用TreeSet错误。 如果有帮助,患者有一个名为getFirstName()的方法,当我尝试执行以下操作时: Iterator patItr = patTreeSet.iterator(); […]

使用@ElementCollection映射Set

我有以下枚举: package ir.raysis.tcs.rule.days; public enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY; } 我尝试将其映射为Set天,如下所示: @ElementCollection(targetClass = Days.class) @JoinTable(name = “days”,joinColumns = @JoinColumn(name = “rule_id”)) @Column(name =”daysOfWeek”, nullable = false) @Enumerated(EnumType.STRING) private Set days = new HashSet(); 但是,它会引发以下exception: Initial SessionFactory creation failed.org.hibernate.MappingException: Could not determine type for: java.util.Set, at table: rule, for columns: [org.hibernate.mapping.Column(days)] […]

Java 8中流的笛卡尔积作为流(仅使用流)

我想创建一个方法来创建一个元素流,这些元素是多个给定流的笛卡尔积(由二元运算符聚合到同一类型)。 请注意,参数和结果都是流, 而不是集合。 例如,对于{A,B}和{X,Y}的两个流,我希望它产生值{AX,AY,BX,BY}的流 (简单串联用于聚合字符串)。 到目前为止,我已经提出了这个代码: private static Stream cartesian(BinaryOperator aggregator, Stream… streams) { Stream result = null; for (Stream stream : streams) { if (result == null) { result = stream; } else { result = result.flatMap(m -> stream.map(n -> aggregator.apply(m, n))); } } return result; } 这是我想要的用例: Stream result = cartesian( (a, b) […]