Java — set 和 list 集合练习题

1、使用Set集合,生成1-25之内不重复的7个随机整数。

//代码
package com.practice1111;

import java.util.HashSet;
import java.util.Set;

public class createRandomBySet {
	public static void main(String[] args) {
		Set<Integer> randomSet = new HashSet<Integer>();
		while (randomSet.size() < 7) {
		    //土方法,方法一,先生成0-25内的随机整数,然后判断去“0”
			int myRandom = (int) (Math.random() * 100) % 25;
			if(myRandom==0) {
				continue;
			}else {
				randomSet.add(myRandom);
			}
			/*生成随机数,方法二,先生成一个0-1的随机数,然后乘以24,再加1,最后取整
			 *int myRandom = (int) (Math.random() * 24 + 1);
			 *randomSet.add(myRandom);
			 */	
		}
		//打印集合
		for (Object result : randomSet) {
			System.out.print(result + " ");
		}
	}
}

运行结果:

在这里插入图片描述

2、如何判断两个集合是否有交集,并打印出他们的交集。

//代码
package com.practice1111;

import java.util.List;
import java.util.ArrayList;
import java.util.Collections;

public class findTheIntersectionOfSets {

	public static void main(String[] args) {

		Integer[] a = { 1, 2, 3, 4, 5 };
		Integer[] b = { 3, 4, 5, 6, 7, 8, 9 };
		List<Integer> list1 = new ArrayList<Integer>(a.length);
		List<Integer> list2 = new ArrayList<Integer>(b.length);
		
		 //方法一:增强for循环,将数组元素添加到集合中 
		 /*for(int c: a) { 
			 list1.add(c); 
			 } 
		 for(int d: b) { 
			 list2.add(d);
		 }*/	

		// 方法二:将数组元素添加到集合中
		Collections.addAll(list1, a);
		Collections.addAll(list2, b);

		// 打印list1集合
		System.out.println("集合二的元素为:");
		for (int e : list1) {
			System.out.print(e + " ");
		}
		System.out.println();
		
		// 打印list2集合
		System.out.println("集合一的元素为:");
		for (int f : list2) {
			System.out.print(f + " ");
		}
		System.out.println();

		// 判断两个集合有无交集,有则打印交集
		if (list1.retainAll(list2)) {
			System.out.println("有交集:");
			for (int e : list1) {
				System.out.print(e + " ");
			}
		} else {
			System.out.println("没有交集!");
		}
	}
}

运行结果:
在这里插入图片描述

3、给你两个集合,要求合并{A} + {B}={C}。 要求集合C中不会有相同的元素。

//代码
package com.practice1111;
import java.util.Set;
import java.util.HashSet;
public class MergeCollection {

	public static void main(String[] args) {
		Integer[] a = { 1, 2, 3, 4, 5 };
		Integer[] b = { 3, 4, 5, 6, 7, 8, 9 };
	    Set<Integer> A = new HashSet<Integer>(a.length);
	    Set<Integer> B = new HashSet<Integer>(a.length);
	    //添加数组元素到A集合
	    for(int c: a) {
	    	A.add(c);
	    }
	    //打印A集合
	    System.out.println("集合A中的元素为:");
	    for(int re: A) {
	    	System.out.print(re + "  ");
	    }
	    //添加数组元素到B集合
	    for(int d: b) {
	    	B.add(d);
	    }
	    System.out.println();
	    //打印B集合
	    System.out.println("集合B中的元素为:");
	    for(int re: b) {
	    	System.out.print(re + "  ");
	    }
	    //合并A集合和B集合
		for(int e: A) {
			B.add(e);
		}
		System.out.println();
		System.out.println("合并后的集合为:");
		for(int f : B) {
			System.out.print(f + "  ");
		}
	}
}

运行结果为:

在这里插入图片描述

4、(list集合)输入工人信息:

  1. 创建一个List,在List 中增加三个工人,基本信息如下:
姓名年龄工资
zhang3183000
li4253500
wang5223200
  1. 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300 。

  2. 删除wang5 的信息 。

  3. 遍历,打印List 中所有工人的信息 。

  4. 利用迭代遍历。

//代码
package com.practice1111;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Worker w1 = new Worker("zhang3", 18, 3000);
		Worker w2 = new Worker("li4", 25, 3500);
		Worker w3 = new Worker("wang5", 22, 3200);
		Worker w4 = new Worker("zhao6", 24, 3300);
		List<Worker> workersList= new ArrayList<Worker>();
		workersList.add(w1);
		workersList.add(w2);
		workersList.add(w3);
		int index = 0;
		System.out.println("*************第一问:添加工人信息****************");
		//打印工人信息
		for(Worker o: workersList) {
			System.out.println("姓名:" + o.getName() + "  年龄:" + o.getAge() + "  工资:" + o.getSalary());
	
		}
		workersList.add(1, w4);
		System.out.println("*************第二问:插入zhao6*****************");
		System.out.println("添加zhao6完成!");
		
		//添加zhao6后,打印工人信息
		for(Worker o: workersList) {
			System.out.println("姓名:" + o.getName() + "  年龄:" + o.getAge() + "  工资:" + o.getSalary());
		}
		System.out.println("*************第三问:删除wang5 的信息*****************");
		System.out.println("删除wang5完成!");
		
		//集合中删除wang5的信息
		workersList.remove(w3);
		for(Worker o: workersList) {
			System.out.println("姓名:" + o.getName() + "  年龄:" + o.getAge() + "  工资:" + o.getSalary());
		}
		System.out.println("*************第四问:增强for循环遍历*****************");
		for(Worker o: workersList) {
			System.out.println("姓名:" + o.getName() + "  年龄:" + o.getAge() + "  工资:" + o.getSalary());
		}
		System.out.println("*************第五问:利用迭代遍历********************");
		Iterator it = workersList.iterator();
		while(it.hasNext()) {
			Worker w = (Worker) it.next();
			System.out.println("姓名:" + w.getName() + "  年龄:" + w.getAge() + "  工资:" + w.getSalary());
		}
	}
}
class Worker{
	String name;
	int age;
	int salary;
	//无参构造方法
	public Worker() {
		// TODO Auto-generated constructor stub
	}
	//有参构造方法
	public Worker(String name, int age, int salary) {
		super();
		this.name = name;
		this.age = age;
		this.salary = salary;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getSalary() {
		return salary;
	}
	public void setSalary(int salary) {
		this.salary = salary;
	}
	
}

运行结果为:
在这里插入图片描述

5、某班级有若干学生(学生对象放在一个List中),每个学生有一个姓名属性、班级名称属性(String)和考试成绩属性(int)。某次考试结束后,每个学生都获得了一个考试成绩,请打印出这个班级的总分和平均分。

//代码
package com.practice1111;
import java.util.List;
import java.util.ArrayList;

public class StudentTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student s1 = new Student("zhangsan", "一班", 85);
		Student s2 = new Student("lisi", "一班", 97);
		Student s3 = new Student("wangwu", "一班", 76);
		Student s4 = new Student("zhaoliu", "二班", 86);
		Student s5 = new Student("cuiqi", "二班", 98);
		Student s6 = new Student("sunba", "二班", 92);
		Student s7 = new Student("lijiu", "二班", 100);
		int totleScore1 = 0; 
		int totleScore2 = 0;
		List list1 = new ArrayList();
		list1.add(s1);
		list1.add(s2);
		list1.add(s3);
		List list2 = new ArrayList();
		list2.add(s4);
		list2.add(s5);
		list2.add(s6);
		list2.add(s7);
		
		for(Object s : list1) {
			Student student = (Student) s;
			totleScore1 += student.getscore();
		}
		for(Object s : list2) {
			Student student = (Student) s;
			totleScore2 += student.getscore();
		}
		System.out.println("一班的总分为:" + totleScore1 + "分" + "   平均分为:" + (double)totleScore1/list1.size()+ "分");
		System.out.println("二班的总分为:" + totleScore2 + "分" + "   平均分为:" + (double)totleScore2/list2.size()+ "分");
	}

}
class Student{
	String name;
	String className;
	int score;
	public Student(String name, String className, int score) {
		super();
		this.name = name;
		this.className = className;
		this.score = score;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getClassName() {
		return className;
	}
	public void setClassName(String className) {
		this.className = className;
	}
	public int getscore() {
		return score;
	}
	public void setscore(int score) {
		this.score = score;
	}
	
}

运行结果为:

在这里插入图片描述

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值