List、Set 集合练习

目录

练习一

练习二


练习一

1.定义一个长度为10的int数组,并存入10个int类型的数据,其中有一些数据是重复的。
2.利用集合的知识对数组进行去重,产生新数组,数组中原来数字的大小顺序不能改变。
3.打印新数组中的内容。

分析:大小顺序不能改变——ArrayList 集合

package com.test1;

import java.util.ArrayList;
import java.util.Arrays;


public class Demo1 {
    public static void main(String[] args) {
        
        int[] arr1 = {1,1,1,3,3,5,5,7,7,17};        
        ArrayList<Integer> al = new ArrayList<Integer>();
        
        for(int i : arr1) {            
            if(! al.contains(i)) {                
                al.add(i);
            }
        }        
        
        //将集合转换为数组     要点---new Integer[al.size()]
        Integer[] arr2 = al.toArray(new Integer[al.size()]);
        
        System.out.println(Arrays.toString(arr2));

    }

}

练习二

键盘读取一行字符串,去掉其中重复字符, 打印去重后的字符串。

分析:

方法一:使用 List集合 中的ArrayList集合【去重--添加】

方法二:使用 Set集合 中的HashSet集合【直接添加,Set特点无序不重复】

package com.test1;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Scanner;

public class Demo2 {
	public static void main(String[] args) {		
		Scanner sc = new Scanner(System.in);
		System.out.println("请您输入一行字符串:");
		String str = sc.nextLine();
		
		method1(str);				
		method2(str);		
	}

	
	//方法1----------------------------------------------------------	
	private static void method1(String str) {			
		ArrayList<Character> al = new ArrayList<Character>();	
		//去重相同的字符,再添加到集合
		for(int i=0; i<str.length(); i++) {
			char ch = str.charAt(i);
			if( ! al.contains(ch)) {				
				al.add(ch);
			}
		}
		
		//遍历输出
		Iterator<Character> it = al.iterator();
		while(it.hasNext()) {
			System.out.print(it.next());
		}
	}

	
	//方法2----------------------------------------------------------	
	private static void method2(String str) {
		HashSet<Character> hs = new HashSet<Character>();	
		//将字符串添加到集合
		for(int i=0; i<str.length(); i++) {											
			hs.add(str.charAt(i));
		}
		
		//遍历输出
		Iterator<Character> iter= hs.iterator();
		while(iter.hasNext()) {
			System.out.print(iter.next());
		}
	}


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值