数组排序去重












遍历




1.数组遍历用foreach:

		
		int[] arr=new int[10];  // 定义一个长度为10的数组arr
		
		for(int i=0;i<arr.length;i++){
			arr[i]=new Random().nextInt(10);  // 创造一个[0,9]的随机数,for循环10次每次把随机产生的数放到arr数组里
		}
		
		for(int i:arr){
			System.out.print(i+" ");  // foreach循环遍历arr里的数
		}
		






2.集合遍历用迭代器Iterator或foreach遍历:

		// 方法一(Iterator迭代器)
		// Iterator提供hasNext()和next()方法
		
		List<Integer> scores=new ArrayList<Integer>();
		// 添加元素
		scores.add(100);
		scores.add(20);

		// iterator写法固定,不会改变
		Iterator<Integer> it=scores.iterator();
		while(it.hasNext()){			
			Integer score=it.next();
			System.out.println(score);
		}
		
		// 方法二(foreach遍历)
		
		List<Integer> scores=new ArrayList<Integer>();
		// 添加元素
		scores.add(100);
		scores.add(20);

		//foreach遍历是底层利用迭代器,这种使用非常频繁,简洁
		for(Integer score : scores) {	
			System.out.println(score);
		}
		
		





类Arrays()方法:

          Arrays.toString(数组名);//排列数值,按下标排,无升序降序
          Arrays.sort(数组名);//升序排列
          Arrays.copyOf(需要被扩/缩容的数组名,想被扩大到/缩小到的长度);//数组需要扩大或者缩小长度
          Arrays.copyOf(arr,arr.length+arr.length/2);//1.5倍扩容





数组的排序(正序、倒序)和去重


正序


		int[] arr=new int[10];	// 定义一个长度为10的数组arr
		for(int i=0;i<arr.length;i++){
			arr[i]=new Random().nextInt(10);  // 创造一个[0,9]的随机数,for循环10次每次把随机产生的数放到arr数组里
		}
		
		for(int i:arr){
			System.out.print(i+" ");  //遍历arr,这时这些值是没有排序的 [乱序]
		}
		System.out.println(); //输出控制台换行,便于观察每次打印数组的值的顺序变化
		Arrays.sort(arr); //利用Arrays类的sort()从小到大排序的方法对arr数组排序
		int[] brr=Arrays.copyOf(arr, arr.length);//利用Arrays类的copyOf方法复制arr数组,便于接下来的倒序操作
		for(int i:brr){	//这时候遍历arr、brr都可以,因为brr是arr的复制品
			System.out.print(i+" "); //遍历brr,这时brr里的排序就为从小到大
		}




倒叙


		for(int i=0;i<brr.length;i++){ //颠倒brr里元素index的位置
			brr[i]=arr[arr.length-1-i];//当i为0,brr第一个元素变为arr最后一个元素
							//(arr和brr里是一样的内容这时候,因为brr是arr的复制品)
		}
		System.out.println();//输出控制台换行,便于观察每次打印数组的值的顺序变化
		for(int i:brr){
			System.out.print(i+" ");//再次遍历brr,brr就为倒叙了
		}




去重


		System.out.println();//输出控制台换行,便于观察每次打印数组的值的顺序变化
		List<Integer> list=new ArrayList<Integer>();//创建一个list集合对象,类型为Integer
		for(Integer i:brr){  //foreach遍历倒叙的brr
			if(!list.contains(i)){ //利用类List的contain()方法,list对象有没有包含i的值,contain()返回boolean值
				list.add(i); //如果没有包含i,就添加i到list集合中
			}
		}
		for(int i:list){
			System.out.print(i+" "); //遍历list的元素,里面就没有重复的值了,因为没有才添加i的值
		}


补充

arr数组第一个元素:arr[0]
arr数组最后一个元素:arr[arr.length-1]

枚举(Enum)

public enum TestEnum {
	//枚举类
	//在其他类里访问枚举类对象时,不用实例化,
	//直接就是TestEnum.SPRING、TestEnum.SUMMER、TestEnum.AUTUMN、TestEnum.WINTER、
	SPRING,SUMMER,AUTUMN,WINTER
	//例如:访问TestEnum.SPRING返回的就是本身的内容SPRING
	//例如:访问TestEnum.SPRING.ordinal()返回的就是这里的枚举内容的下标[从0开始]
	///SPRING下标为0,SUMMER下标为1,AUTUMN下标为2,WINTER下标为3

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Brrby

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值