|
@@ -0,0 +1,209 @@
|
|
|
|
+package com.sf.day18._02_util;
|
|
|
|
+
|
|
|
|
+import com.sf.day18._02_util.dt.A;
|
|
|
|
+import com.sf.day18._02_util.dt.B;
|
|
|
|
+import com.sf.day18._02_util.dt.Fruit;
|
|
|
|
+import com.sf.day18._02_util.util.CalcUtil;
|
|
|
|
+
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.util.*;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+public class Test {
|
|
|
|
+ public static void main(String[] args) {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// method3();
|
|
|
|
+// method4();
|
|
|
|
+// method5();
|
|
|
|
+// method6();
|
|
|
|
+ method7();
|
|
|
|
+ }
|
|
|
|
+// 需求3: 有一个水果有(id,name,color)
|
|
|
|
+// 在静态代码块中初始化5个水果对象存放到集合中,其中2个绿色,1个红色 ,1个蓝色
|
|
|
|
+// 要求在控制台中输入颜色, 要求返回输入颜色水果, 如果不存在返回空集合
|
|
|
|
+ private static void method7() {
|
|
|
|
+ //1 创建出来Scaner 对象
|
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
|
+ //2 拿到我们输入内容
|
|
|
|
+ System.out.println("请输入颜色:");
|
|
|
|
+ String color = scanner.next();
|
|
|
|
+ //3 创建出来一个List 集合
|
|
|
|
+ List<Fruit> fruits = new ArrayList<>();
|
|
|
|
+ //4 遍历在静态代码块当中存集合数据
|
|
|
|
+ List<Fruit> fruits1 = Fruit.fruits;
|
|
|
|
+ //5 拿到每一个元素
|
|
|
|
+ for (Fruit fruit : fruits1) {
|
|
|
|
+ if(color.equals(fruit.getColor())){
|
|
|
|
+ fruits.add(fruit);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println(fruits);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 需求2: 用户输入 10.32 13.00 18.32 8.32 , 要求计算最大值除最小值等于多少要求进行精度计算
|
|
|
|
+ // Collections.min() max() BigDecmail
|
|
|
|
+ private static void method6() {
|
|
|
|
+ //1 创建出来Scaner对象
|
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
|
+ List<Double> list = new ArrayList<>();
|
|
|
|
+ //2 循环4此,吧元素添加到集合当中
|
|
|
|
+ for (int i = 0; i < 4; i++) {
|
|
|
|
+ System.out.println("请输入内容");
|
|
|
|
+ list.add(scanner.nextDouble());
|
|
|
|
+ }
|
|
|
|
+ //3 找出来最大值和最小值
|
|
|
|
+ Double max = Collections.max(list);
|
|
|
|
+ Double min = Collections.min(list);
|
|
|
|
+ //4 用bigdecmail 把最大值和最小值 包装起来,然后进行计算
|
|
|
|
+ BigDecimal b1 = new BigDecimal(max);
|
|
|
|
+ BigDecimal b2 = new BigDecimal(min);
|
|
|
|
+ System.out.println("最大值除最小值为:" + b1.divide(b2));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 需求1: 用户输入内容 1,5,6,4,3,2 要求 输出[6,5,4,3,2,1]
|
|
|
|
+ private static void method5() {
|
|
|
|
+ // 1 创建出来Scaner 对象
|
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
|
+ // 2 循环6次
|
|
|
|
+ List<Integer> list = new ArrayList<>();
|
|
|
|
+ for (int i = 0; i < 6; i++) {
|
|
|
|
+ // 3 把输入元素添加到List 集合当中
|
|
|
|
+ System.out.println("请输入内容:");
|
|
|
|
+ int item = scanner.nextInt();
|
|
|
|
+ list.add(item);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 4 先调用sort 进行排序 , 从小到大
|
|
|
|
+ Collections.sort(list);
|
|
|
|
+ // 5 在调用reverse 调过来
|
|
|
|
+ Collections.reverse(list);
|
|
|
|
+ System.out.println(list);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * Collections 工具类当中常见api
|
|
|
|
+ */
|
|
|
|
+ private static void method4() {
|
|
|
|
+ // Collections 当中是有一些字段
|
|
|
|
+ // 表示创建一个空list 集合
|
|
|
|
+ List list = Collections.EMPTY_LIST;
|
|
|
|
+ Set emptySet = Collections.EMPTY_SET;
|
|
|
|
+ System.out.println(list);
|
|
|
|
+ System.out.println(emptySet);
|
|
|
|
+
|
|
|
|
+ List<Integer> list1 = Arrays.asList(1, 3, 10, 4, 9);
|
|
|
|
+// max方法 和min 方法
|
|
|
|
+
|
|
|
|
+ System.out.println("集合当中最大值:"+Collections.max(list1));
|
|
|
|
+ System.out.println("集合当中最大值:"+Collections.min(list1));
|
|
|
|
+
|
|
|
|
+// reverse 反转list 集合顺序
|
|
|
|
+ Collections.reverse(list1);
|
|
|
|
+ System.out.println(list1);
|
|
|
|
+
|
|
|
|
+ // 对于集合进行排序 sort(list)
|
|
|
|
+ Collections.sort(list1);
|
|
|
|
+ System.out.println(list1);
|
|
|
|
+
|
|
|
|
+ // 有一些业务场景要求我们返回空集合
|
|
|
|
+ // 3 中方式 1 new ArrayList(); 2 Collections.EMP_LIST 3 Collection.emptyList();
|
|
|
|
+
|
|
|
|
+ // copy 将一个集合当中元素 复制到另外集合中
|
|
|
|
+// List<Integer> list1 = Arrays.asList(1, 3, 10, 4, 9);
|
|
|
|
+ // 拷贝实收要求新的集合长度要和 之前长度是一样的 , 要对于集合当中元素还有进行初始化
|
|
|
|
+
|
|
|
|
+ ArrayList<Integer> list2 = new ArrayList<>(list1.size());
|
|
|
|
+
|
|
|
|
+ for (int i = 0; i < list1.size(); i++) {
|
|
|
|
+ list2.add(null); // 或者使用 0 或其他默认值
|
|
|
|
+ }
|
|
|
|
+ System.out.println(list2);
|
|
|
|
+ Collections.copy(list2,list1);
|
|
|
|
+ System.out.println(list2);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 需求1: 用户输入内容 1,5,6,4,3,2 要求 输出[6,5,4,3,2,1]
|
|
|
|
+ *
|
|
|
|
+ * 需求2: 用户输入 10.32 13.00 18.32 8.32 , 要求计算最大值除最小值等于多少要求进行精度计算
|
|
|
|
+ *
|
|
|
|
+ * 需求3: 有一个水果有(id,name,color) 在静态代码块中初始化5个水果对象存放到集合中,其中2个绿色,1个红色 ,1个蓝色
|
|
|
|
+ * 要求在控制台中输入颜色, 要求返回输入颜色水果, 如果不存在返回空集合
|
|
|
|
+ */
|
|
|
|
+
|
|
|
|
+ private static void method3() {
|
|
|
|
+
|
|
|
|
+ // 提示: 集合.toArray() 数组
|
|
|
|
+ // 需求:1 用户在控制台数值类型内容 1,20,3,3,5,6,7
|
|
|
|
+ // 最终要 数组 [1,3,5,6,7,30] 特点: 去重 - 有顺序
|
|
|
|
+ // 把大于5的放到 [6,7,30]
|
|
|
|
+ //==============================================>
|
|
|
|
+ //1 定义扫描对象
|
|
|
|
+ Scanner scanner = new Scanner(System.in);
|
|
|
|
+ //2 遍历7次把输入内容放到set集合中
|
|
|
|
+ Set<Integer> set = new HashSet<>();
|
|
|
|
+ for (int i = 0; i < 7; i++) {
|
|
|
|
+ System.out.println("请输入数组内容:");
|
|
|
|
+ int count = scanner.nextInt();
|
|
|
|
+ set.add(count);
|
|
|
|
+ }
|
|
|
|
+ //3 把set 集合转换成数组 次数数组是无需的
|
|
|
|
+ Object[] array = set.toArray();
|
|
|
|
+ //4 使用Arrays.sort 进行排序
|
|
|
|
+ Arrays.sort(array);
|
|
|
|
+ List<Integer> list = new ArrayList<>();
|
|
|
|
+ //5 遍历拿到每一个集合中元素
|
|
|
|
+ for (int i = 0; i < array.length; i++) {
|
|
|
|
+ //6 判断他是否大于5 , 如果大于5把元素放到一个list 集合中
|
|
|
|
+ Integer item = (Integer) array[i];
|
|
|
|
+ //7 把List 集合转成数组
|
|
|
|
+ if(item>5){
|
|
|
|
+ list.add(item);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println(Arrays.toString(list.toArray()));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static void method2() {
|
|
|
|
+ /**
|
|
|
|
+ * Arrays 当中的一些常见api
|
|
|
|
+ * 工具类: 主要对数组进行操作
|
|
|
|
+ * asList toString copyeOf sort
|
|
|
|
+ */
|
|
|
|
+ // asList 把数组转换成List 集合
|
|
|
|
+ List<String> list = Arrays.asList("1", "2", "3");
|
|
|
|
+ System.out.println(list);
|
|
|
|
+
|
|
|
|
+ // toString(); 如果不覆盖toString方法 默认打印对象地址值
|
|
|
|
+ int [] arr = {1,3,2,5,45,6};
|
|
|
|
+ System.out.println(arr);
|
|
|
|
+
|
|
|
|
+ // sort: 对于我们数组进行排序操作
|
|
|
|
+ Arrays.sort(arr);
|
|
|
|
+ System.out.println(Arrays.toString(arr));
|
|
|
|
+
|
|
|
|
+ // copyOf
|
|
|
|
+ int[] arr1 = Arrays.copyOf(arr, 10);
|
|
|
|
+ System.out.println(Arrays.toString(arr1));
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static void method1() {
|
|
|
|
+ A a = new A(1,2);
|
|
|
|
+ System.out.println(CalcUtil.sum(a.getA(), a.getB()));
|
|
|
|
+
|
|
|
|
+ B b =new B(2,3);
|
|
|
|
+ System.out.println(CalcUtil.sum(b.getC(), b.getD()));
|
|
|
|
+ /**
|
|
|
|
+ * 抽取工具类有什么好处: 提高代码的复用性
|
|
|
|
+ * 在写代码的时候一般遵循以一个原则尽量减少重复的代码 DRV 原则
|
|
|
|
+ *
|
|
|
|
+ * 自己封装工具类: 自己封装的工具类一般是封装你项目当中的一些重复的代码 或者通用的代码
|
|
|
|
+ */
|
|
|
|
+ }
|
|
|
|
+}
|