| 
			
	
	
	
						  
						
						
						
	
 
	本视频是解读性视频,所以希望您已经看过了本知识点的内容,并且编写了相应的代码之后,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
	 
			 
	1分39秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 示例 1 : 是否有顺序 示例 2 : 能否重复 示例 3 : 练习-不重复的随机数 示例 4 : 答案-不重复的随机数 
					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);
          
    }
}
 
								
										
									
								
							
					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);
          
    }
}
 
								
										
									
								
							
					生成50个 0-9999之间的随机数,要求不能有重复的
					 
					
				
				
										
				在查看答案前,尽量先自己完成,碰到问题再来查看答案,收获会更多
			 
					
			
		
	
本视频是解读性视频,所以希望您已经看过了本答案的内容,带着疑问来观看,这样收获才多。 不建议一开始就观看视频
 
	
	
	 
	1分14秒 本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器 
					使用Set来存放随机数,不断的向里塞,直到塞满50个位置。 因为Set有不重复的特性,所以最后得到的50个,就一定是不重复的
					 
					
				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);
	}
}
 
									
								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);
	}
}
								
								
				HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。
			 
			 
			
			
			
			
			
		
		
		
		 	问答区域     
		 	
				
		  
	 
	  		
	  
	  	2025-06-18
	  		
	  				
	  					 
	  
					
						我的答案 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  
 
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2024-07-11
	  		
	  				
	  					 
	  
					
						通过HashSet实现生成指定数量不重复的随机数 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  
 
		回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢	
	 
	  		
	  
	  	2023-09-05
	  		
	  				
	  					 
	  
					
						答案-不重复的随机数 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  
	  		
	  
	  	2022-05-31
	  		
	  				
	  					 
	  
					
						答案 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  
	  		
	  
	  	2021-08-17
	  		
	  				
	  					 
	  
					
						练习-我的答案 
					
					
						
							
						
											
							
					
					
					
	   
	  
	  
	  	    
	    
	  提问太多,页面渲染太慢,为了加快渲染速度,本页最多只显示几条提问。还有 30 条以前的提问,请 点击查看 
			
			提问之前请登陆
			
		 
		提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢	
	 
 |