Tag: 集合

struts2中的列表在使用modeldriven接口时选择cant resoved

您好我在我的struts2应用程序中使用接口modeldriven。 我在渲染页面时遇到问题,因为我总是收到错误: 19 nov. 2013 11:23:12 org.apache.catalina.core.StandardWrapperValve invoke GRAVE: “Servlet.service()” pour la servlet jsp a généré une exception tag ‘select’, field ‘list’: The requested list key ‘listeItems’ could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} – [unknown location] at org.apache.struts2.components.Component.fieldError(Component.java:240) at org.apache.struts2.components.Component.findValue(Component.java:333) at org.apache.struts2.components.ListUIBean.evaluateExtraParams(ListUIBean.java:80) 我不知道错误在哪里,所以我给社区打电话。 struts.xml : 11204928 errorAction sessionInvalid blank […]

以自然顺序存储集合中的唯一元素

在我解决Java测试时,我提出了以下问题: 您需要在集合中存储元素,以确保不存储重复项,并且可以按自然顺序访问所有元素。 哪个接口提供该function? A. java.util.Map B. java.util.Set C. java.util.List D. java.util.Collection 我不知道这里的正确案例是什么? 我们可以在任何这些集合中存储相同的元素,除非在Set ,但Set不提供自然顺序。 怎么了?

不可变的番石榴collections品的缺陷?

我不确定我理解的不可变集合的缺陷是否正确,所以我在这个答案中列出它们。 希望有人在这里纠正我。 a):与Collections.unmodifiableXXX()相比,ImmutableXXX.copyOf() 丢失了源集合function 。 例如,当将linkedList放入ImmutableList.copyOf()时,不再链接ImmutableList。 与基于树的集合相同。 b):人们认为Collections.unmodifiableXXX只使用相同的源集合引用,因此一旦源集合发生更改,Collections.unmodifiableXXX也会更改。 但我的解决方案是将源集合包装到临时集合中,该集合传递给ImmutableXXX.copyOf()。 见下面的代码: List l = new ArrayList(); List unmodifiableList = Collections.unmodifiableList(l); ImmutableList immutableList= ImmutableList.copyOf(l); l.add(“a”);//unmodifiableList is also added “a”, immutableList not. /*My solution as follows: So unmodifiableList2 is also immutable as ImmutableList.copyOf(l) does*/ List unmodifiableList2= Collections.unmodifiableList(new ArrayList(l)); 您对Immutable系列的理解是什么? 谢谢!

从ArrayList中删除元素时出现ConcurrentModificationException

当我运行以下代码时,Java正在抛出ConcurrentModificationException。 Anyidea为什么会这样? ArrayList list1 = new ArrayList(); list1.add(“Hello”); list1.add(“World”); list1.add(“Good Evening”); for (String s : list1){ list1.remove(2); System.out.println(s); }

如何从arrayList对象中创建所有可能的幂集(或子集)?

说我有以下课程: class A { String name; Double value; } 以及可能具有以下内容的上述类对象的列表: [{f 2.1}, {c 1.1}, {a 0.3}… and so on] [{n 0.5}, {f 1.9}, {x 0.1}, {a 1.9}, {b 1.1}… and so on] … and so on 我想要的只是做以下事情: 1. Building power subsets from the internal list items(NB: skip the single subsets). 2. Push the subset in […]

在OneToMany注释列表中重复

我正在使用JPA 2 + Hibernate 4.2.6开发一个Java项目,我得到了一个奇怪的行为。 在我的模型中,我有两个相关的参与者: Question和Answer @Entity public class Question { // … @OneToMany(mappedBy = “question”, cascade = CascadeType.ALL, fetch = FetchType.EAGER) private Set answers; // … } @Entity public class Answer { // … @ManyToOne(optional = false) @JoinColumn(name = “question_id”, nullable = false) private Question question; // … } 这很有效:所有与某个Question相关的Answer都正确加载。 但现在我需要将answers收集器的Set从Set更改为List 。 我改变了类型并再次运行应用程序,现在我得到了几个重复的answers […]

Java Collections.shuffle()奇怪的行为

我正在经历一些奇怪的事情。 我有一个很大的长数列表。 它按升序包含大约20万个数字。 这些数字总是截然不同的; 它们不一定是连续的,但它们中的一些通常是连续的。 我想从这个列表中提取一个5k的已排序样本,所以基本上这是我的方法: 我调用java.util.Collections.shuffle(list); 我从现在洗牌的list提取出前5k个元素 我按升序对提取的元素进行排序 不过,我的结果有些奇怪。 如果不是连续的话,我提取的很多随机长片看起来很可疑。 例如,我得到了: … 38414931, 38414932, 38414935, 38414937, 38414938, 38414939, 38414941, … 这绝对不是随机的:/ 有一个更奇怪的事情。 在调试时,我尝试将初始list和提取的样本写入文件以进行比较。 如果我这样做,我的问题似乎消失了,我提取的Longs看起来像是正确的随机数。 当然,我已经重复了很多次,每次我都经历过这两种行为。 我错过了什么吗? 编辑:这是我正在使用的代码: List allNumbers = ; —>如果在这里我将allNumbers写入文件,它似乎工作正常 Collections.shuffle(allNumbers); HashSet randomNumbers = new HashSet(); for (int i = 0; i < 5000; i++) { randomNumbers.add(allNumbers.get(i)); }

在Java中对我自己类型的arraylist进行排序

我有一个名为Item的Java类型,定义如下: private Integer itemNo; private String itemName; private String itemDescription; … 我希望能够根据itemName按降序对这种类型的arraylist进行排序。 从我读到的,这可以通过以下方式完成: Collections.sort(items, Collections.reverseOrder()); 物品是: ArrayList items = new ArrayList(); 但我发现对Collections.sort的调用给了我一个: Item cannot be cast to java.lang.Comparable 运行时exception。 有人可以建议我需要做什么吗?

带有Map和Hashtable的ConcurrentModificationexception

在我的应用程序中,我使用了Map来存储POJO对象。 根据要求,我需要迭代Map的keySet并删除不需要任何修改的对象。 考虑下面的代码.. public void remove(Map removeUser){ Set keySet = removeUser.keySey(); User user = null; for(String key : keySet){ user = (user) removeUser.get(key); if(!user.isActive()){ removeUser.remove(key); } } } 这里在上面的代码中,当我尝试在删除对象后获取User对象时,我收到ConcurrentModificationException。 谁能告诉我为什么会发生? 我没有使用multithreading。所以无法理解,从哪里生成ConCurrentModification Exception。 即使我尝试使用HashMap和Hashtable,但问题仍然存在。 谢谢,Gunjan。

如何“逻辑:迭代”只是一个对象?

所以,我有这个代码: logic:iterate name=”nameForm” property=”name” id=”nameId” indexId=”index” bean:write name=”nameId” property=”field1″/ bean:write name=”nameId” property=”field2″/ 这很有效,因为我收到了一个“对象表”,所以我可以毫无问题地进行迭代。 现在,在另一个页面上,我需要做同样的事情,但问题是我没有收到“对象表”,而是一个对象本身。 我尝试了它 – 正如预期的那样 – 得到了错误: 无法为此集合创建迭代器 我已经RTFM了,而且我比以前更加困惑。 我得到了“logic:iterate”里面的“name”如何指向struts-config中的表单名称,现在我需要对一个 bean做同样的事情,请问有什么帮助吗?