什么问题/陷阱,必须重写时,必须考虑equals和hashCode?
我有一个Java EE应用程序,我使用Hibernate.域对象,我将List/ArrayList更改为Set/HashSet,因为最好使用Sets.
但是在我的Dao实现中我遇到了一个问题:
public Set<Person> getAllPersons() {
    SessionFactory sessionFactory = HibernateUtil.getSessionFactory();
    Session sess = sessionFactory.getCurrentSession();
    Transaction tx = sess.beginTransaction();
    @SuppressWarnings("unchecked")
    Set<Item> items = (Set<Item>) sess.createQuery("from Item").list();
    tx.commit();
    return items;
}
在这里我收到一个错误:
java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.Set
我该怎么做才能避免这个错误?
提前谢谢你和最诚挚的问候.
与下面的代码相比,是否有更好的方法从数组列表中删除重复项,当遇到较大的输入时,它的工作时间为 O(n) 。任何建议,将不胜感激。谢谢。
注意:- 不能使用任何额外空间,应就地解决。
输入:- 这将是一个带有重复项的排序数组。
代码 :-
    public int removeDuplicates(ArrayList<Integer> a) {
        if(a.size()>1){
        for( int i=0;i<a.size()-1;i++ ) {
          if(a.get(i).intValue() == a.get(i+1).intValue() ) {
            a.remove(i);
            i--; 
          }
      }
      }
    return a.size();
    }
请在编码器链接处测试代码。