精华内容
下载资源
问答
  • Set集合不允许存储重复元素原理

    千次阅读 2020-06-22 20:46:38
    Set集合不允许存储重复元素原理 package com.Set; import java.util.HashSet; /* Set集合不允许存储重复元素原理 */ public class Demo02HashSetSaveString { public static void main(String[] args) { //创建...

    Set集合不允许存储重复元素原理

    package com.Set;
    
    import java.util.HashSet;
    /*
        Set集合不允许存储重复元素原理
     */
    public class Demo02HashSetSaveString {
        public static void main(String[] args) {
            //创建HashSet集合对象
            HashSet<String> set = new HashSet<>();
            String s1 = new String("abc");
            String s2 = new String("abc");
            set.add(s1);
            set.add(s2);
            set.add("重地");
            set.add("通话");
            set.add("abc");
            System.out.println(set);  //[重地, 通话, abc]
        }
    }
    

    01:Set集合在调用add方法的时候,add方法会调用元素的hashCode方法和equals方法,判断元素是否重复。

    1. set.add(s1);
      add方法会调用s1的hashCode方法,计算字符串“abc”的哈希值,哈希值是96354
      在集合中找有没有96354这个哈希值的元素,发现没有
      就会把s1存储在集合中
    2. set.add(s2);
      add方法会调用s2的hashCode方法,计算字符串“abc”的哈希值,哈希值是96354
      在集合中找有没有96354这个哈希值的元素,发现有(哈希冲突) s2会调用equals方法和哈希值相同的元素进行比较
      s2.equals(s1),返回true 两个元素的哈希值相同,equals方法返回true,认定两个元素相同
      就不会把s2存储到集合中
    3. set.add(“重地”);
      add方法会调用"重地"的hashCode方法,计算字符串"重地"的哈希值,哈希值是1179395
      在集合中找有没有1179395这个哈希值的元素,发现没有
      就会把"重地"存储在集合中
    4. set.add(“通话”);
      add方法会调用"通话"的hashCode方法,计算字符串"通话"的哈希值,哈希值是1179395
      在集合中找有没有"通话"这个哈希值的元素,发现有(哈希冲突)
      “通话"会调用equals方法和哈希值相同的元素进行比较"通话”.equals"重地"),返回false
      两个元素的哈希值相同,equals方法返回false,认定两个元素不同
      就把"通话"存储到集合中

    02:Set集合存储不重复的元素
    前提:存储的元素必须重写hashCode方法和equals方法
    在这里插入图片描述

    展开全文
  • Java Set( 不允许重复集合

    万次阅读 2018-03-09 21:07:30
    HashSet: 防止重复使用HashSet的class必须implements Comparable();ArrayList&lt;class&gt; classList=new ArrayList&lt;class&gt;(); HashSet&lt;class&gt; classSet=new HashSet&lt;...
    HashSet:  防止重复
    使用HashSet的class必须implements Comparable();
    ArrayList<class> classList=new ArrayList<class>();
    HashSet<class> classSet=new HashSet<class>();
    classSet.addAll(classList);     //addAll()可以复制其他集合的元素,效果就跟一个一个加进去一样


    但是仅仅这样做的话还是会有重复;
    HashSet如何检查重复?:hashCode()和equals():     //相同的对象必须hashCode()相同并且equals()返回true,但hashCode()相同的对象不一定相同。
    必须覆盖hashCode()和equals():   hashCode()的默认行为是对在heap上的对象产生独特的值,如果没有override过hashCode(),则该class的两个对象怎样都不会被认为是相同的。
    class class implements Comparable<class>{
    String title;
    public boolean equals (Object a){
         class s=(class)a;
         return title.equals(a.getTitle());
    }
    public int hashCode(){
    return title.hashCode();
    }
    }



    TreeSet:防止重复并保持有序
    TreeSet<Class> classSet=new TreeSet<Class>();  //调用没有参数的构造函数来用TreeSet取代HashSet意味着以对象的compareTo()方法来进行排序
    classSet.addAll(classList);
    要使用TreeSet,下列一项必须为真:
    *集合中的元素必须是有实现Comparable的类型,并覆盖了compareTo(Object o)方法。例如:
    class Book implements Comparable{
    String title;
    public int compareTo(Object b)
    {Book book=(Book)b;  return title.compareTo(book.title);}}


    或*使用重载、取用Comparator参数的构造函数来创建TreeSet。例如:
    class BookCompare implements  Comparator<Book>{
    public int compare(Book one,Booke two)
    {return one.title.compareTo(two.title);}}
    class Test{
    BookCompare bCompare=new BookCompare();
    TreeSet<Book> tree=new TreeSet<Book>(bCompare);}
    


    展开全文
  • Set集合不重复添加原理 String和其他对象的比较 String对象 其他对象

    Set集合不可重复添加原理
    String和其他对象的比较
    其他对象
    Set集合不可重复添加原理String
    String对象
    Set集合不可重复添加原理

    展开全文
  • 消除集合重复元素

    千次阅读 2018-07-25 10:48:43
    消除集合中重复元素,根本考差点即list与set的区别。...知道两者的区别,就可以利用Set不允许重复值的特点,消除集合中的重复元素。 例: 1.利用ArrayList去除集合中重复字符串元素 ArrayList list = n...

    传送门:list、map、set的区别

    消除集合中重复元素,根本考差点即list与set的区别。
    简单点说:list 代表有索引编号的集合,可以存放重复的对象,可以在指定的位置插入对象。set存放不重复的对象,只能有一个null元素。

    知道两者的区别,就可以利用Set不允许重复值的特点,消除集合中的重复元素。

    例:

    1.利用ArrayList去除集合中重复字符串元素

    
            ArrayList list = new ArrayList();
            list.add("aa");
            list.add("bb");
            list.add("cc");
            list.add("aa");
            list.add("bb");
    
           ArrayList newList = getSingle(list);
            System.out.println(newList);
        /*
        创建一个新的集合,存放去除重复元素后的元素。
    
          分析:1,创建新集合
             2,根据传入的旧集合获取迭代器
             3,遍历旧集合
             4,通过新集合判断是是否包含旧集合中的元素,如果包含,就不添加,否则才添加
        */
        public static ArrayList getSingle(ArrayList list){
                ArrayList newList = new ArrayList();     //创建新集合
                Iterator it = list.iterator();        //根据传入的集合旧集合获取迭代器
                while(it.hasNext()){          //遍历旧集合
                Object obj = it.next();       //记录每一个元素
                if(!newList.contains(obj)){   //如果新集合中不包含旧集合中的元素,则添加
                newList.add(obj);       
                }
            }
            return newList;//返回的集合即去掉重复元素后的集合
        }
    

    2.利用Set去除集合中重复字符串元素

    ArrayList list = new ArrayList();
            list.add("aa");
            list.add("bb");
            list.add("cc");
            list.add("aa");
            list.add("bb");
            System.out.println("旧集合:"+list);
            Set set = new HashSet(list);
            List newList = new ArrayList(set);
            System.out.println("新集合"+newList);

    对比可见,set集合在实例化时可直接传递list参数。相比较利用arraylist遍历每一个元素,更加方便。

    展开全文
  • vb6.0中文编程数组集合重复的判断机制是什么?怎么定义数组不允许出现完全一样的两行?能能禁止数据的两行完全一样?
  • java什么集合的 元素重复

    千次阅读 2016-09-29 08:56:56
    java什么集合的 元素能重复的 hdnfdhsd132 | 浏览 1999 次 2015-11-17 10:...Set 集合不允许重复的。 Set为接口,常用的实现类是HashSet 举个例子: Set testSet = new HashSet(); testSet.add(1); testS
  • java为什么吗list允许存储重复元素,而set不允许存储重复元素
  • set中的元素是能相等重复的,这一点我知道,那么怎样才是(重复呢? 是hashcode相等?是地址相同?是元素的equal返回true? 猜测:先判断是不是同一个引用(地址),再判断equal 我自己做了...
  • Set集合如何判断重复元素

    千次阅读 2019-04-20 15:06:00
    1.TreeSet子类是利用Comparable接口来实现重复元素的判断,但是Set集合的整体特征就是不允许保存重复元素。 2.HashSet判断元素重复是利用Object类中的方法实现的: -|对象编码:public int hashCode(); -|对象....
  • 有序且不重复集合

    千次阅读 2018-01-10 18:47:08
    import java.util.LinkedList; public class SetList extends LinkedList{ ... 自定义一个不重复且有序的集合 */ private static final long serialVersionUID = 3612971767507405567L; @Override   pu
  •  // 不允许建与值同时重复  public static final int DENY_SAME_VALUE_AND_KEY = 3;  // 值  private List values;  // 键  private List keys;  // 大小  private int size = 0;  // 模式  ...
  • 前篇文章我们介绍了一下Excel中如何设置数据有效性以及COUNTIF函数的用法,这篇文章主要介绍有重复数据时如何统计不重复数据的个数以及通过数据有效性去设置单元格不允许出现重复数据。 统计单列不重复的个数 如下...
  • Java哪些集合的 元素重复

    万次阅读 2016-05-05 12:35:32
    Set < E > 是一个包含重复元素的 collection。更确切地讲,set 包含满足 e1.equals(e2) 的元素对 e1 和 e2,并且最多包含一个 null 元素。常用的实现类是HashSet < E > 和 TreeSet 例如:Set<Integer> set = new ...
  • **如题,怎么存放一个对象集合,是有序的,集合中的对象也是不重复的额,最好可以高效一些。**
  • set集合重复

    千次阅读 2016-03-16 13:29:25
    由于set集合是一个包含重复元素的 collection,所以本身set集合存值是无序不重复的。如果将可变对象用作 set 元素,那么必须极其小心。如果对象是 set 中某个元素,以一种影响 equals 比较的方式改变对象的值,...
  • Java中利用Set判断List集合中是否有重复元素

    万次阅读 多人点赞 2018-12-05 20:05:36
    我们需要找出重复的元素,我们只需要返回一个Boolean类型就可以了 如果使用循环遍历的方式,将会消耗大量的性能 我们只需要将List集合转化为Set集合,再进行比较就可以实现了: 代码如下: package com.test; ...
  • 对Set不允许重复值的理解

    千次阅读 2012-07-29 22:22:34
    当自定义的对象重写了equles()方法后还要重写hashCode()方法(只有用到集合框架的 Hashtable、HashMap、HashSet的时候,才需要重载hashCode()方法)。 这样可以保证逻辑相等的对象他的hashCode值也是相等的真真...
  • 为了实现在ArrayList中存储不重复的对象,需要重写equals方法。remove()方法和contains()方法都会调用equals()方法。 在使用HashSet时,也要在对象类中重写两个方法即,hashCode()和equals()方法。因为HashSet会在...
  • Set中的元素为什么不允许重复

    万次阅读 2015-12-16 18:44:37
    因为map中的key是不允许重复的,所以set中的元素能重复。   下面我们再看一下, map 又是如何保证其 key 重复的呢?   现在我们看一下 map 中的 put() 方法的实现: HashMap 实现了 ...
  • 整理的Java List Set Map是否有序,元素是否允许重复的说明,如下图:
  • 当你想找个人说话的时候,才发现有些事情是能告诉别人的,有些事情是不必告诉别人的,有些事情是根本没有办法告诉别人的,而有些事情即使告诉了别人,你也会马上后悔,那么最好的办法 就是静下来,真正能平静自己...
  • JAVA集合重复性与是否有顺序

    千次阅读 2015-06-21 09:50:35
    List 中 ...如图:可见存储空间是有顺序的,当然放重复数据时候也可以清晰分别。所以可以重复。可见存储空间是有顺序的,当然放重复数据时候也可以清晰分别。所以可以重复。     Linkl...
  • 381. O(1) 时间插入、删除和获取随机元素 - 允许重复 设计一个支持在平均 时间复杂度 O(1) 下, 执行以下操作的数据结构。 注意: 允许出现重复元素。 insert(val):向集合中插入元素 val。 remove(val):当 val 存在...
  • 快速过滤掉List集合重复

    千次阅读 2013-07-23 11:47:04
    这里可以使用Set不允许重复的特性来快速过滤掉List集合中的重复项   避免了去循环比对List集合中的每一项主键是否相等 例如  courses 是List类型 快速过滤的方法 Set set = new HashSet(courses); ...
  • java中set集合重复验证机制

    千次阅读 2018-09-30 14:47:18
    我们知道,set集合很重要的一个特性,是不允许存储重复的元素。那么,这究竟是怎么验证的呢。在之前的资料查询中,有这样一个说法,set集合进行插入的时候,会调用对象的equals方法,判断元素是否相同,若equals...
  • List 集合: 被比较的对象要重写equals()方法, 调用List中contains()方法,... HashSet集合(不允许重复元素,允许空值): 被比较的对象要重写hashCode()方法和重写equals()方法, 两个都要.   TreeSet集合.(允许重...
  • Redis集合类型-能添加重复的元素

    千次阅读 2019-10-23 20:40:57
  • 在java的集合中,判断两个对象是否相等的规则是: 1)、判断两个对象的hashCode是否相等 。  如果相等,认为两个对象也相等,完毕  如果相等,转入2) (这一点只是为了提高存储效率而要求的,其实理论上没有也...
  • //永远不等,允许重复 } } public MySortList():base(new MyComparer()) { } public void Add(K key, V value) { //falg用于跳出函数 int flag = 0; //检查是否具备这个key,...
  • 请教大神怎么替换List集合重复的值,急等!!!!!!!!!!!!!!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 283,407
精华内容 113,362
关键字:

哪个集合不允许重复