zoukankan      html  css  js  c++  java
  • 集合框架系列教材 (十二)- 关系与区别

    步骤1:是否有顺序
    步骤2:能否重复
    步骤3:练习-不重复的随机数
    步骤4:答案-不重复的随机数

    示例 1 : 是否有顺序

    ArrayList: 有顺序
    HashSet: 无顺序

    HashSet的具体顺序,既不是按照插入顺序,也不是按照hashcode的顺序。关于hashcode有专门的章节讲解: hashcode 原理

    以下是HasetSet源代码中的部分注释

    /**

     * It makes no guarantees as to the iteration order of the set; 

     * in particular, it does not guarantee that the order will remain constant over time. 

    */

    不保证Set的迭代顺序; 确切的说,在不同条件下,元素的顺序都有可能不一样



    换句话说,同样是插入0-9到HashSet中, 在JVM的不同版本中,看到的顺序都是不一样的。 所以在开发的时候,不能依赖于某种臆测的顺序,这个顺序本身是不稳定的

    是否有顺序

    package collection;

       

    import java.util.ArrayList;

    import java.util.HashSet;

        

    public class TestCollection {

        public static void main(String[] args) {

               

            ArrayList<Integer> numberList =new ArrayList<Integer>();

            //List中的数据按照插入顺序存放

            System.out.println("----------List----------");

            System.out.println("向List 中插入 9 5 1");

            numberList.add(9);

            numberList.add(5);

            numberList.add(1);

            System.out.println("List 按照顺序存放数据:");

            System.out.println(numberList);

            System.out.println("----------Set----------");

            HashSet<Integer> numberSet =new HashSet<Integer>();

            System.out.println("向Set 中插入9 5 1");

            //Set中的数据不是按照插入顺序存放

            numberSet.add(9);

            numberSet.add(5);

            numberSet.add(1);

            System.out.println("Set 不是按照顺序存放数据:");

            System.out.println(numberSet);

               

        }

    }

    示例 2 : 能否重复

    List中的数据可以重复
    Set中的数据不能够重复
    重复判断标准是:
    首先看hashcode是否相同
     如果hashcode不同,则认为是不同数据
     如果hashcode相同,再比较equals,如果equals相同,则是相同数据,否则是不同数据
    更多关系hashcode,请参考hashcode原理

    能否重复

    package collection;

       

    import java.util.ArrayList;

    import java.util.HashSet;

        

    public class TestCollection {

        public static void main(String[] args) {

               

            ArrayList<Integer> numberList =new ArrayList<Integer>();

            //List中的数据可以重复

            System.out.println("----------List----------");

            System.out.println("向List 中插入 9 9");

            numberList.add(9);

            numberList.add(9);

            System.out.println("List 中出现两个9:");

            System.out.println(numberList);

            System.out.println("----------Set----------");

            HashSet<Integer> numberSet =new HashSet<Integer>();

            System.out.println("向Set 中插入9 9");

            //Set中的数据不能重复

            numberSet.add(9);

            numberSet.add(9);

            System.out.println("Set 中只会保留一个9:");

            System.out.println(numberSet);

               

        }

    }


    更多内容,点击了解: https://how2j.cn/k/collection/collection-arraylist-vs-hashset/367.html

  • 相关阅读:
    9.17(day11)
    9.14(day10)
    9.13(day9)
    9.12(day8)
    mysql 的存储过程
    MySQL 子查询与多表联合查询
    MySQL 函数
    MySQL 的查询
    MySQL的约束
    MySQL 表的增删改查操作
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615492.html
Copyright © 2011-2022 走看看