欢迎光临散文网 会员登陆 & 注册

java使用Collection单例集合实现元素存储

2022-07-24 14:48 作者:虚云幻仙  | 我要投稿

/**
*  使用List/Set存储[1,10]整数1到10 不重复,放入顺序随机
*/

public class TestList {
   public static void main(String[] args) {
       List<Integer> al = new ArrayList<>();
       Random r = new Random();
       int count=0;
       while(al.size()<10){
           Integer e = r.nextInt(10)+1;
           //.nextInt(10)返回0到9整数,再+1变为1到10
           if (!al.contains(e)){
               //List允许元素重复 需要在添加之前判断.contains()
               al.add(e);
           }
           count++;
       }
       System.out.println(al);
       //结果[8, 10, 6, 7, 4, 5, 2, 3, 9, 1] List不会自动对容器内的元素更改顺序/排序 每个存入的元素都有index index是从0开始顺序的
       System.out.println(count);
   }
}

class TestSet{
   public static void main(String[] args) {
       Set<Integer> hs = new HashSet<>();
       int count = 0;
       while (hs.size()<10){
           hs.add((int)(Math.random()*10+1));
           count++;
           //Set集合要求元素互异 存入重复元素会被舍弃
       }
       System.out.println(hs);
       //结果[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] HashSet伪排序 初始通过[16]长度数组+单向链表进行存储 每个元素需要.hashCode()返回结果%16 存放到对应的位置
       //Integer重写.hashCode()直接return value  1到10%16结果为1到10 遍历时从前往后依次取出 结果恰好为从小到大顺序

       System.out.println(count);
       hs.add(16);
       System.out.println(hs);
       //结果[16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  16%16=0 存放到1的前面 遍历的时候元素的顺序不再有序
   }
}

java使用Collection单例集合实现元素存储的评论 (共 条)

分享到微博请遵守国家法律