P1.编写如下程序。
给定两个集合A和B,分别求AUB,A∩B,A-B的值。
package test;
import java.util.*;
//P1.编写如下程序。
//给定两个集合A和B,分别求AUB,A∩B,A-B的值。
public class Keep_9 {
public static void main(String[] args) {
List<String> ls = new ArrayList<String>();
List<String> ls2 = new ArrayList<String>();
ls.add("George");
ls.add("Jim");
ls.add("John");
ls.add("Blake");
ls.add("Kevin");
ls.add("Micheal");
ls2.add("George");
ls2.add("Katie");
ls2.add("Micheal");
ls2.add("Kevin");
ls2.add("Ryan");
System.out.println("第一个集合");// 打印输出第一个集合
ListIterator lit0 = ls.listIterator();
while (lit0.hasNext()) {
System.out.print(" " + lit0.next());
}
System.out.println();
System.out.println("第二个集合");// 打印输出第二个集合
lit0 = ls2.listIterator();
while (lit0.hasNext()) {
System.out.print(" " + lit0.next());
}
System.out.println();
jiao(ls, ls2);
System.out.println();
System.out.println("两个集合的并");
lit0 = bing(ls, ls2).listIterator();
while (lit0.hasNext()) {
System.out.print(" " + lit0.next());
}
System.out.println();
cha(ls, ls2);
}
public static void jiao(List ls, List ls2) {
System.out.println("两个集合的交");
List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
Collections.copy(list, ls);
list.retainAll(ls2);
Iterator lit0 = list.listIterator();
while (lit0.hasNext()) {
System.out.print(" " + lit0.next());
}
}
public static List bing(List ls, List ls2) {
List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
Collections.copy(list, ls);
list.addAll(ls2);// 两个集合的并
return list;
}
public static void cha(List ls, List ls2) {
ls = bing(ls, ls2);
List list = new ArrayList(Arrays.asList(new Object[ls.size()]));
Collections.copy(list, ls);
list.removeAll(ls2);// 两个集合的差
System.out.println("两个集合的差");
Iterator lit0 = list.listIterator();
while (lit0.hasNext()) {
System.out.print(" " + lit0.next());
}
}
}
P2. 编写如下程序。
1)创建HashSet对象,写入50个1-20的随机整数。
2)创建ArrayList对象,读取h的所有元素后写入。
3)创建HashMap对象,读取a的第5到第10个元素后写入,key初始值100,每存入一个元素+1。
package test;
import java.util.*;
//P2. 编写如下程序。
//1)创建HashSet对象,写入50个1-20的随机整数。
//2)创建ArrayList对象,读取h的所有元素后写入。
//3)创建HashMap对象,读取a的第5到第10个元素后写入,key初始值100,每存入一个元素+1。
public class Keep_10{
public static void main(String[] args) {
Set<Integer> strList = new HashSet<Integer>();
Random r=new Random(1);
for(int i=0;i<50;i++)
{
int ran1=r.nextInt(21);
strList.add(ran1);
}
Iterator it = strList.iterator();
ArrayList<Integer> a = new ArrayList<Integer>();
while(it.hasNext())
{ int i=(int)it.next();
a.add(i);
}
System.out.println(a);
HashMap t = new HashMap();
int key=100;
for(int i=0;i<6;i++)
{ List<Integer> c=a.subList(5, 5+i);
t.put(key, c);
key++;
}
System.out.println(t);
}
}
P3. 编写如下程序(可选题)。
有三批苹果,采用交互指令方式(命令行,或是程序中输入)输入每批苹果数量,即分三次运输到仓库,苹果重量在0.5kg~1kg之间随机取值,试编写程序对苹果进行筛选(注: 使用集合操作):
1)分别统计75#(0.5~0.6),80#(0.6~0.8),85#(0.8~1.0)苹果个数;
2)给出这些苹果的最大重量与最小重量;
3)加工这些苹果(remove,删除所有对象)。
package test;
public class Apple {
private double weight;
public Apple() {
}
public Apple(double weight) {
this.weight = Double.parseDouble((weight+"").substring(0,3));
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight = weight;
}
@Override
public String toString() {
return "Apple{" + "weight=" + weight + '}';
}
}
苹果尺寸计算的代码
package test;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Random;
import java.util.Scanner;
public class Storage {
private ArrayList<Apple> apples;
private double appleSizeMin;
private double appleSizeMax;
private double weightMin;
private double weightMax;
private int size;
public Storage() {
apples = new ArrayList<>();
}
public void add(int num){
for (int i=0;i<num;i++){
/**
* Math.random() 的范围 0 - 1.0
* 而苹果要求 0.5 - 1.0间取值,故做如下处理
*/
Apple apple = new Apple(0.5 + Math.random() / 2);
new Random();
System.out.println(apple);
apples.add(apple);
}
}
// 根据型号设置 每个型号苹果的大小范围 这里为 左闭右开
public int calculation(String size){
switch (size){
case "75#":
appleSizeMin = 0.5;
appleSizeMax = 0.6;
break;
case "80#":
appleSizeMin = 0.6;
appleSizeMax = 0.8;
break;
case "85#":
appleSizeMin = 0.8;
appleSizeMax = 1.0;
break;
}
return calculation(appleSizeMin,appleSizeMax);
}
// 以左闭右开原则进行统计
private int calculation(double appleSizeMin,double appleSizeMax){
int sum = 0;
for (Apple apple : apples){
if (apple.getWeight() >= appleSizeMin && apple.getWeight() < appleSizeMax){
sum++;
}
}
return sum;
}
public double getWeightMin(){
double temp = apples.get(0).getWeight();
for (Apple apple : apples){
if (apple.getWeight() < temp){
temp = apple.getWeight();
}
}
return temp;
}
public double getWeightMax(){
double temp = apples.get(0).getWeight();
for (Apple apple : apples){
if (apple.getWeight() > temp){
temp = apple.getWeight();
}
}
return temp;
}
// 使用迭代器进行删除
public void remove(){
Iterator<Apple> iterator = apples.iterator();
while (iterator.hasNext()){
Apple apple = iterator.next();
System.out.println(apple + " 被删除");
iterator.remove();
}
}
// 统计仓库苹果数量
public int size(){
return apples.size();
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int num;
Storage storage = new Storage();
System.out.println("第一次输入数量:");
num = scanner.nextInt();
storage.add(num);
System.out.println("第二次输入数量:");
num = scanner.nextInt();
storage.add(num);
System.out.println("第三次输入数量:");
num = scanner.nextInt();
storage.add(num);
System.out.println("苹果个数:" + storage.size());
System.out.println("#75个数:" + storage.calculation("75#"));
System.out.println("#80个数:" + storage.calculation("80#"));
System.out.println("#85个数:" + storage.calculation("85#"));
System.out.println(storage.getWeightMin());
System.out.println(storage.getWeightMax());
storage.remove();
System.out.println("苹果个数:" + storage.size());
}
}