集合之五:Set接口(答案)

时间:2022-09-23 17:57:49
  1 package com.shsxt.homework;
  2 
  3 import java.util.ArrayList;
  4 import java.util.Collection;
  5 import java.util.HashSet;
  6 import java.util.List;
  7 
  8 /*
  9  * 1、分析以下需求,并用代码实现:
 10     (1)有如下代码:
 11         public static void main(String[] args) {
 12             List<String> list = new ArrayList<>();
 13             list.add("a");
 14             list.add("f");
 15             list.add("b");
 16             list.add("c");
 17             list.add("a");
 18             list.add("d");
 19              
 20         }
 21         (2)利用HashSet对list集合去重(最终结果:list中没有重复元素)
 22 2、:自己写出contains 方法
 23 
 24 
 25 3、分析以下需求,并用代码实现: (1)编写一个泛形方法,实现指定位置数组元素的交换 (2)编写一个泛形方法,接收一个任意数组,并反转数组中的所有元素    
 26 
 27 4.将"goOd gooD stUdy dAy dAy up"
 28      每个单词的首字母转换成大写其余还是小写字母(不许直接输出good good study day day up 要用代码实现)
 29  */
 30 public class Homework {
 31     //1 
 32     public static void main(String[] args) {
 33         List<String> list = new ArrayList<>();
 34         list.add("a");
 35         list.add("f");
 36         list.add("b");
 37         list.add("c");
 38         list.add("a");
 39         list.add("d");
 40          
 41         /*HashSet<String> set = new HashSet<>();
 42         set.addAll(list);
 43         System.out.println(set);
 44         list.clear();
 45         list.addAll(set);
 46         System.out.println(list);
 47         
 48         //2
 49         boolean flag=contains(set, "");
 50         System.out.println(flag);
 51         
 52         
 53         //3.1
 54         System.out.println(list);
 55         change(list, 1, 4);
 56         System.out.println(list);
 57         */
 58         
 59         //3.2
 60         String[] str=new String[10];
 61         list.toArray(str);
 62         printArr(str);
 63         System.out.println("--------------");
 64         reverse(str);
 65         
 66         //4
 67 //        String str = "goOd gooD stUdy dAy dAy up";
 68 //        turnTo(str);
 69     }
 70     
 71     //2 编写自己的contains方法
 72     public static  boolean contains(Collection<String> c,String str){
 73         
 74         for(String s: c){
 75             if (str != null || str != "") {
 76                 if (str.equals(s)) {
 77                     return true;
 78                 }
 79             }
 80         }
 81         return false;
 82     }
 83     
 84     //3分析以下需求,并用代码实现: 
 85     //(1)编写一个泛形方法,实现指定位置数组元素的交换 
 86     public static <E> List<E> change(List<E> list,int idx1,int idx2){
 87         E e=list.get(idx2);
 88         list.set(idx2, list.get(idx1));
 89         list.set(idx1, e);
 90         return list;
 91     }
 92     //(2)编写一个泛形方法,接收一个任意数组,并反转数组中的所有元素    
 93     
 94     /*public static <E> E[] reverse(E[] arr) {
 95         for (int j = 0 ; j <arr.length ; j++) {
 96             for (int i = arr.length-1 ; i > 0 ; i--) {
 97                 E temp=null;
 98                 temp=(E)arr[j];
 99                 arr[j]=arr[i];
100                 arr[i]=temp;
101             }
102         }    
103         
104         return arr;
105     }*/
106       public static <T> void reverse(T[] arr) {
107           //将数组进行交换
108           for (int i = 0; i < arr.length / 2 ; i++) {
109                   T temp = arr[i];
110                   arr[i] = arr[arr.length - 1 - i];
111                   arr[arr.length - 1 - i] = temp;
112           }
113           System.out.println("反转后的数据:");
114           printArr(arr);
115       }
116 
117     
118     //4 将"goOd gooD stUdy dAy dAy up"
119     //每个单词的首字母转换成大写其余还是小写字母(不许直接输出good good study day day up 要用代码实现)
120     public static void turnTo(String str){
121         
122         String[] split = str.split(" +");
123         
124         // 创建StringBuilder对象
125         StringBuilder sb = new StringBuilder();
126         for(int i = 0; i < split.length; i++) {
127                 String new_str = split[i];
128                 // 使用substring截取首字符,将其转换成大写
129                 String head = new_str.substring(0, 1).toUpperCase();
130                 // 截取除首字母以外的字符串,将其转换成小写
131                 String end = new_str.substring(1).toLowerCase();
132                 // 将头和尾拼接上
133                 sb.append(head).append(end).append(" ");
134         }
135         System.out.println(sb);
136     }
137     
138     
139     
140     //遍历数组的方法
141     public static <E> void printArr(E str[]){
142         for (int i = 0; i < str.length; i++) {  
143             System.out.print(str[i]+" ");  
144         }   
145     }
146 }