Tag: set

在我的案例中使用Set删除数组中的重复元素

我有一个对象Array ,因为我使用的是第三方库,通过从库中调用一个方法来获取数组, 我无法访问 MyObject 类 。 //I have no access to MyObject class, I am sure the objects contain duplicated elements. MyObject[] objects = SOME_LIB_CLASS.getObjects(); System.out.println(“length is “+ objects.length); //length is 6 我尝试删除对象中的重复元素,我使用Set : Set objectSet = new HashSet(Arrays.asList(objects)); System.out.println(“length is “+ objectSet.size()); //length is 6 still 但是objectSet仍然包含重复的元素,为什么以及如何在不迭代数组的情况下解决我的问题?

如何在不改变equals和hashcode的情况下插入到set中

我正在寻找一个建议。 我有一个带有firstName和String lastName的Person类当我想要插入具有相同String的列表值时: set.add(new Person(“firstName”,”lastName”)) set.add(new Person(“firstName”,”lastName”)) 该集合不会过滤对象,他们仍然进入集合。 有没有建议创建集合列表而不覆盖equales和hashcode函数? 也许用番石榴或一些groovy列表? 谢谢,或者。

当值的hashset为Empty时,删除hashmap中的键

我有一个将字符串键映射到hashsets值的hashmap,我想在hashmaps的hashset值为空时从hashmap中删除一个键。 我无法接近这个。 这是我尝试过的但是我很困惑: for(Map.Entry<String, HashSet> entr : stringIDMap.entrySet()) { String key = entr.getKey(); if (stringIDMap.get(key).isEmpty()) { stringIDMap.remove(key); continue; } //few print statements… }

Java Set 相等忽略大小写

我想通过忽略字母的大小写来检查两组String的所有元素是否相等。 Set set1 ; Set set2 ; . . . if(set1.equals(set2)){ //all elements of set1 are equal to set2 //dosomething } else{ //do something else } 但是,此等式检查不会忽略字符串的情况。 还有其他方法吗?

比较集合内的集合

我有这样的一套: Set<Set> NestedSet = new HashSet<Set>(); [[Node[0], Node[1], Node[2]], [Node[0], Node[2], Node[6]], [Node[3], Node[4], Node[5]]] 我想比较和合并嵌套集内的集合。 [0,1,2]和[0,2,6]具有共同的要素。 所以应该合并它们形成0,1,2,6。 输出应该是这样的: [[Node[0], Node[1], Node[2], Node[6]], [Node[3], Node[4], Node[5]]] 有没有有效的方法?

Hibernate – > ArrayList不能转换为Set

我有一个Java EE应用程序,我使用Hibernate。 域对象,我将List / ArrayList更改为Set / HashSet,因为最好使用Sets。 但是在我的Dao实现中我遇到了一个问题: public Set getAllPersons() { SessionFactory sessionFactory = HibernateUtil.getSessionFactory(); Session sess = sessionFactory.getCurrentSession(); Transaction tx = sess.beginTransaction(); @SuppressWarnings(“unchecked”) Set items = (Set) sess.createQuery(“from Item”).list(); tx.commit(); return items; } 在这里我收到一个错误: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Set 我该怎么做才能避免这个错误? 提前谢谢你和最诚挚的问候。

如何根据自定义java对象而不是基本类型从列表中删除重复项?

在我发布这个问题之前,我发现在这里发布了类似的问题。 但答案是基于一个字符串。 但是,我在这里有不同的情况。 我不是要删除String而是另一个名为AwardYearSource的对象。 该类有一个名为year的int属性。 所以我想删除基于年份的重复项。 即如果有不止一次提到的2010年,我想删除该AwardYearSource对象。 我怎样才能做到这一点?

是否存在不允许空值的基本Java Set实现?

Java Set接口的API指出: 例如,某些实现禁止null元素,而某些实现对其元素的类型有限制 我正在寻找一个不需要排序的基本Set实现(如ArrayList为List接口提供的)并且不允许null 。 TreeSet , HashSet和LinkedHashSet都允许null元素。 另外,TreeSet要求元素实现Comparable 。 似乎目前没有这样的基本Set 。 有谁知道为什么? 或者,如果确实存在,我可以找到它? [编辑]:我不想允许null ,因为稍后在代码中我的类将迭代集合中的所有元素并调用特定方法。 (我实际上正在使用HashSet<MyRandomObject >)。 我宁愿快速失败而不是失败,或者由于集合中的null而意外地产生一些奇怪的行为。

是否有可嵌入的Java替代Redis?

根据这个post ,如果我想从Java使用Redis,Jedis是最好用的。 但是,我想知道是否有任何库/包提供与Redis中已存在的类似的高效设置操作,但是可以直接嵌入Java应用程序而无需设置单独的服务器。 (即,使用Jetty作为Web服务器)。 更确切地说,我希望能够有效地执行以下操作: 有大量M个用户(事先不知道M)。 有大量的N项。 我们希望用户一次检查项目,一个用户/项目,产生存储结果(在普通数据库中)。 每次用户到达时,我们都希望为该用户分配用户以前从未见过的现有结果数量最少的项目。 当我们只关心所有项目看起来大致相同的次数时,这会对所有到达的用户产生近似的循环分配项目。 以上以并行方式发生。 当M和N很大时,Redis比SQL查询更有效地完成上述任务。 有没有办法使用比启动Redis服务器更轻量级的可嵌入Java库来实现这一点? 我认识到使用Java的并发库编写一堆代码是可能的,这些库大致接近这个(在某种程度上,我已经完成了),但这并不是我在这里寻找的。

Hibernate PersistentSet remove()操作不起作用

我在我的父实体中有一个Set,如下所示: Class Parent { @OneToMany(mappedBy = parent, cascade = CasacadeType.ALL) Set children; } Class Child { @Column(nullable=false) @ManyToOne Parent parent; } 现在事件,如果我对其中一个元素的Set执行remove()操作,它实际上不会被删除。