当前位置: 移动技术网 > IT编程>开发语言>Java > Java自学-集合框架 ArrayList和HashSet的区别

Java自学-集合框架 ArrayList和HashSet的区别

2019年12月28日  | 移动技术网IT编程  | 我要评论
Java ArrayList和HashSet的区别 示例 1 : 是否有顺序 ArrayList: 有顺序 HashSet: 无顺序 HashSet的具体顺序,既不是按照插入顺序,也不是按照hashcode的顺序。 以下是 HasetSet源代码 中的部分注释 / It makes no guara ...

java arraylist和hashset的区别

示例 1 : 是否有顺序

arraylist: 有顺序
hashset: 无顺序

hashset的具体顺序,既不是按照插入顺序,也不是按照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相同,则是相同数据,否则是不同数据
能否重复

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);
           
    }
}

练习

生成50个 0-9999之间的随机数,要求不能有重复的

答案 :

package collection;
 
import java.util.hashset;
import java.util.set;
 
public class testcollection {
    public static void main(string[] args) {
        set<integer> numbers =new hashset<>();
        while(numbers.size()<50){
            int i = (int) (math.random()*10000);
            numbers.add(i);
        }
        system.out.println("得到50个不重复随机数:");
        system.out.println(numbers);
    }
}

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网