我经常需要获取对象列表,并根据对象中包含的值将它们分组到Map中.例如.按国家/地区列出用户和组.
我的代码通常如下所示:
Map<String, List<User>> usersByCountry = new HashMap<String, List<User>>();
for(User user : listOfUsers) {
if(usersByCountry.containsKey(user.getCountry())) {
//Add to existing list
usersByCountry.get(user.getCountry()).add(user);
} else {
//Create new list
List<User> users = new ArrayList<User>(1);
users.add(user);
usersByCountry.put(user.getCountry(), users);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我不禁想到这很尴尬,而且一些大师有更好的方法.到目前为止,我能看到的最接近的是来自Google Collections的MultiMap.
有没有标准方法?
谢谢!
Eclipse 3.4和3.5中的内容辅助已停止为我工作.当我键入一个类的前几个字符并点击CRTL空间然后延迟后我得到以下错误消息 alt text http://locuslive.com/webdrive/JDTscreenshot.png
我启用/禁用哪些提议并不重要,我会收到此(或类似)消息.
我试过了:
更改Xms/Xmx值
用-clean启动Eclipse
创建新工作区并导入我的项目
然而,这些都没有奏效.
我看过一些帖子暗示其他应用程序可能正在接管CRTL空间或以其他方式干扰,但除了新的Eclipse运行之外我什么都没有,问题仍然存在.
我的问题是非常相似的一个覆盖这个帖子虽然在以后的版本和OSX 10.5.7.
有没有人对如何解决这个问题有任何建议?
谢谢.
更新:对于任何感兴趣的人,我使用Eclipse 3.5 Classic获得了最好的结果(即不包括Mylyn).我还使用了下面链接到VonC的错误报告中指定的设置.
有趣的是Classic并没有提供一些观点,例如.片段,但这些很容易从另一个发行版中删除.
更新2:即使使用最新版本的Eclipse(3.6 M1),这个问题实际上仍然存在.它是由我的Altova Mapforce生成的大型JAR文件在我们的应用程序中处理EDIFACT转换引起的.通过将此JAR添加到构建路径可以重现,并且不会更改内容辅助设置帮助.bug(和JAR)可以在https://bugs.eclipse.org/bugs/show_bug.cgi?id=289057上看到
我经常面对Hibernate的一个问题就是有一个列表(称之为listA)我希望对实体(myEntity)持久化但必须首先将它们与实体上的现有列表进行比较并删除那些不是在listA中.
执行此操作的简单方法是清除实体上的列表,并将listA的所有列表添加到实体中,但是我必须在删除元素之前对其进行一些验证 - 例如.检查是否允许该用户删除它们.
我目前的方法感觉很尴尬:
//Delete the elements that have been removed
//Use toArray to avoid ConcurrentModificationException
for(ObjectA a : myEntity.getObjectAList().toArray(new ObjectA[myEntity.getObjectAList().size()])) {
if(!listA.contains(a)) {
//Check if this element can be deleted
if(canDelete(a)) {
entityManager.remove(a);
myEntity.getObjectAList().remove(a);
}
}
}
//Add the elements that don't already exist
for(ObjectA a : listA) {
if(!myEntity.getObjectAList().contains(a)) {
myEntity.getObjectAList().add(a);
}
}
Run Code Online (Sandbox Code Playgroud)
还有改进的余地吗?
谢谢.
Java是如何BigDecimal痛苦的?
Double d = 13.3D;
BigDecimal bd1 = new BigDecimal(d);
BigDecimal bd2 = new BigDecimal(String.valueOf(d));
System.out.println("RESULT 1: "+bd1.toString());
System.out.println("RESULT 2: "+bd2.toString());
RESULT 1: 13.300000000000000710542735760100185871124267578125
RESULT 2: 13.3
Run Code Online (Sandbox Code Playgroud)
是否存在需要结果1的情况?我知道Java 1.5改变了toString()方法,但这是预期的后果吗?
我也意识到BigDecimal有doubleValue()等等,但我正在使用的库有用地使用了一个toString(),我无法改变:-(
干杯.
我无法在Eclipse项目上执行任何Subversion操作,因为Subclipse无法重命名文件.错误是:
Caused by: org.tigris.subversion.javahl.ClientException: svn: Cannot rename file '/Users/damianharvey/Sites/Odyssey3.5/OdysseyEDIJAXB/src/com/locuslive/edi/edifact/d95b/coreor/.svn/tmp/entries' to '/Users/damianharvey/Sites/Odyssey3.5/OdysseyEDIJAXB/src/com/locuslive/edi/edifact/d95b/coreor/.svn/entries'
at org.tigris.subversion.javahl.JavaHLObjectFactory.throwException(JavaHLObjectFactory.java:777)
at org.tmatesoft.svn.core.javahl.SVNClientImpl.throwException(SVNClientImpl.java:1850)
at org.tmatesoft.svn.core.javahl.SVNClientImpl.cleanup(SVNClientImpl.java:863)
at org.tigris.subversion.svnclientadapter.javahl.AbstractJhlClientAdapter.cleanup(AbstractJhlClientAdapter.java:1958)
... 8 more
Caused by: org.tmatesoft.svn.core.SVNException: svn: Cannot rename file '/Users/damianharvey/Sites/Odyssey3.5/OdysseyEDIJAXB/src/com/locuslive/edi/edifact/d95b/coreor/.svn/tmp/entries' to '/Users/damianharvey/Sites/Odyssey3.5/OdysseyEDIJAXB/src/com/locuslive/edi/edifact/d95b/coreor/.svn/entries'
Run Code Online (Sandbox Code Playgroud)
我正在运行OSX Snow Leopard,Eclipse 3.5,Subclipse 1.6.5.
它看起来像权限问题.如果我列出错误中的目录,我得到:
drwxrwxrwx 8 damianharvey staff 272 19 Nov 17:43 .
drwxrwxrwx 16 damianharvey staff 544 21 Sep 14:53 ..
-r--r--r-- 1 damianharvey staff 2030 21 Sep 14:53 all-wcprops
-r--r--r-- 1 damianharvey staff 2313 21 Sep 14:53 entries
drwxrwxrwx 2 damianharvey staff 68 21 …Run Code Online (Sandbox Code Playgroud) 根据Eclipse 3.3的发行说明,您现在可以与CRTL-ALT-J一起加入行.这对我在Mac上运行Eclipse 3.5不起作用.它对其他人有用吗?
我有一个查询在两个数据集之间返回的时间差异很大.对于一组(数据库A),它会在几秒钟内返回,而另一组(数据库B)......我还没有等待足够长的时间,但是超过10分钟.我已将这两个数据库转储到本地计算机,我可以重现运行MySQL 5.1.37的问题.
奇怪的是,数据库B小于数据库A.
重现问题的查询的精简版本是:
SELECT * FROM po_shipment ps
JOIN po_shipment_item psi USING (ship_id)
JOIN po_alloc pa ON ps.ship_id = pa.ship_id AND pa.UID_items = psi.UID_items
JOIN po_header ph ON pa.hdr_id = ph.hdr_id
LEFT JOIN EVENT_TABLE ev0 ON ev0.TABLE_ID1 = ps.ship_id AND ev0.EVENT_TYPE = 'MAS0'
LEFT JOIN EVENT_TABLE ev1 ON ev1.TABLE_ID1 = ps.ship_id AND ev1.EVENT_TYPE = 'MAS1'
LEFT JOIN EVENT_TABLE ev2 ON ev2.TABLE_ID1 = ps.ship_id AND ev2.EVENT_TYPE = 'MAS2'
LEFT JOIN EVENT_TABLE ev3 ON ev3.TABLE_ID1 = ps.ship_id AND ev3.EVENT_TYPE = 'MAS3' …Run Code Online (Sandbox Code Playgroud) 在大多数文章中,我看到ESB和EAI之间的主要区别是"EAI中的单点故障".
我的问题是:
在EAI中,如果Hub失败,我们会说这是单点故障.在ESB中,如果总线发生故障,我们可以说单点故障.这是正确的吗?如果没有,请简要说明一下.
是否可以使默认的Eclipse"生成hashCode()和equals()"使用getter而不是字段引用? - 即.我可以使用它使用的模板吗?
我正在使用Hibernate,并且当使用getter而不是来自字段引用时,Proxied Objects只是LazyLoaded.不断改变它是一件烦恼.
显而易见的解决方法是自己创建一个模板或者编写一个插件 - 这听起来有些过分.
编辑:看起来这些是不可配置的.我将此作为JBoss Tools Group的一个问题(他们为Hibernate制作了一些插件).
有没有人意识到编辑器和jsr 303验证如何与GWT 2.3一起工作?验证API已添加到gwt sdk.但我无法使用编辑器框架验证实体.无论我做什么,都不会从客户端或服务器端抛出错误.
这是一段代码:
public class P {
public P() {}
@Size(min=4)
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
Run Code Online (Sandbox Code Playgroud)
PEditor
public class PEditor extends Composite implements Editor<P> {
private static PEditorUiBinder uiBinder = GWT.create(PEditorUiBinder.class);
interface PEditorUiBinder extends UiBinder<Widget, PEditor> {}
@UiField
TextBox name;
public PEditor() {
initWidget(uiBinder.createAndBindUi(this));
}
}
Run Code Online (Sandbox Code Playgroud)
PEditor pEditor;
interface Driver extends SimpleBeanEditorDriver<P, PEditor> {}
Driver driver = GWT.<Driver> create(Driver.class);
public void onModuleLoad() { …Run Code Online (Sandbox Code Playgroud) java ×5
eclipse ×4
hibernate ×2
bigdecimal ×1
collections ×1
eai ×1
editor ×1
esb ×1
gwt ×1
hashmap ×1
mysql ×1
optimization ×1
precision ×1
subclipse ×1
svn ×1
terminology ×1
validation ×1