Java HashMap、Hashset、ArrayList和函数间调用的练习

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());
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值