Java学习第十五章 之 Map、可变参数、Collections

  1 /*
  2 
  3 Map:存储键值对
  4 
  5         键不能重复存储,值可以重复
  6 
  7         每一个键对应一个值
  8 
  9 方法:
 10 
 11        v put(K key , V value)将指定的键和值添加到集合中
 12 
 13        v get(Object obj) 获取指定的键对应的值
 14 
 15        v remove(Object key)移除指定的键所对应的值
 16 
 17 */
 18 
 19 public class MapDemo{
 20 
 21     public static void main(String[] args){
 22 
 23         //创建map对象
 24 
 25         Map<String , String> map = new HashMap<String , String>();
 26 
 27         //给Map中添加元素,会返回key所对应的value值,若key没有对应的值,则返回null
 28 
 29         map.put("张三" , "上海");
 30 
 31         map.put("李四" , "北京");
 32 
 33         System.out.println(map);
 34 
 35         //根据key获取value值
 36 
 37        String s =  map.get("张三");
 38 
 39        System.out.println(s);//上海
 40        //移除key,返回key对应的value值
 41 
 42         String st = map.remove("张三");
 43 
 44         System.out.println(st);//上海
 45 
 46         System.out.println(map);//{李四,北京}
 47 
 48     }
 49 
 50 }
 51 
 52 /*
 53 
 54 Map集合键找值的方式 : 通过元素的键,获取键所对应的值
 55 
 56 Set<K>  keySet() 遍历键的Set集合,得到每一个键,根据键,获取键对应的值
 57 
 58 */
 59 
 60 public class MapDemo{
 61 
 62     public static void main(String[] args){
 63 
 64      //创建Map对象
 65 
 66     Map<String , Integer> map = new HashMap<String , Integer>();
 67 
 68     map.put("张三" , 20);
 69 
 70     map.put("李四" , 20);
 71 
 72     //获取Map中的key
 73 
 74     Set<String> keySet = map.keySet();
 75 
 76    //遍历存放所有key的Set集合
 77 
 78    Iterator<String> it = keySet.iterator();
 79 
 80    while(it.hasNext()){
 81 
 82           //获取key
 83 
 84           String key = it.next();
 85 
 86           //通过key找到对应的值
 87 
 88          int value = map.get(key);
 89 
 90           System.out.println(key+" "+ value);
 91 
 92     }
 93 
 94     }
 95 
 96 }
 97 
 98 
 99 
100 /*
101 
102 Entry嵌套接口 : static interface(Map.Entry(K , V))
103 
104                          K getKey() 返回与此项对应的键
105 
106                          V getValue() 返回与此项对应的值
107 
108                          Set<Map.Entry<K , V>> entrySet() 用于返回Map集合中所有的键值对对象,以Set集合形式返回 
109 
110 */
111 
112 public class MapDemo{
113 
114      public static void main(String[] args){
115 
116          //创建Map对象
117 
118         Map<String , Integer>  map = new HashMap<String , Integer>();
119 
120        map.put("赵云" , 20);
121 
122        map.put("吕小布" , 20);
123 
124       //遍历Map中的所有的 key 和 value 的对应关系
125 
126       Set<Map.Entry<String , Integer>>  entrySet = map.entrySet();
127 
128     //遍历Set集合
129 
130      for(Map.Entry<String , Integer> entry : entrySet){
131 
132              //通过每一对对应关系获取对应的key
133 
134              String key = entry.getKey();
135 
136              //通过每一对对应关系获取对应的key
137              int value = entry.getValue();
138 
139            System.out.println(key +"  "+ value);
140 
141        }
142 
143      }
144 
145 }
146 
147 /*
148 
149 HashMap存储自定义类型
150 
151 */
152 
153 public class Student {
154 
155     private String name;
156     private int age;
157 
158     public String getName() {
159       return name;
160     }
161     public void setName(String name) {
162        this.name = name;
163     }
164     public int getAge() {
165        return age;
166     }
167     public void setAge(int age) {
168        this.age = age;
169     }
170     public Student() {
171        super();
172  
173     }
174     public Student(String name, int age) {
175        super();
176      this.name = name;
177      this.age = age;
178     }
179     @Override
180      public int hashCode() {
181         final int prime = 31;
182         int result = 1;
183         result = prime * result + age;
184         result = prime * result + ((name == null) ? 0 : name.hashCode());
185         return result;
186      }
187     @Override
188      public boolean equals(Object obj) {
189         if (this == obj)
190         return true;
191         if (obj == null)
192         return false;
193         if (getClass() != obj.getClass())
194         return false;
195         Student other = (Student) obj;
196         if (age != other.age)
197         return false;
198         if (name == null) {
199         if (other.name != null)
200         return false;
201         } else if (!name.equals(other.name))
202         return false;
203         return true;
204      }
205     @Override
206      public String toString() {
207           return "Student [name=" + name + ", age=" + age + "]";
208      }
209 
210     public static void main(String[] args) {
211 
212           //创建Map对象
213           Map<Student, String> map = new HashMap<Student, String>();
214           map.put(new Student("张三" , 20), "北京");
215           map.put(new Student("李四" , 20), "上海");
216           map.put(new Student("王五" , 20), "广州");
217 
218 
219         //遍历存放所有key的Set集合
220         Set<Student> keySet = map.keySet();
221 
222 
223         Iterator<Student> it = keySet.iterator();
224         while(it.hasNext()) {
225 
226         //获取key
227         Student key= it.next();
228 
229         //通过key找到对应的值
230 
231         String value = map.get(key);
232         System.out.println(key +".."+ value);
233   }
234 
235 /*
236 
237 静态导入:
238 
239               在导包的过程中我们可以直接导入静态部分,这样某个类的静态成员就可以直接使用了。在源码中经常会出现静态导入
240 
241               格式;import static xxx.yyy;导入后yyy可直接使用
242 
243              Set<Map.Entry<String , String>> entrySet = map.entrySet();
244 
245              Set<Entry<String , String>> entrySet = map.entrySet();
246 
247 */
248 
249 /*
250 
251   可变参数:如果定义一个方法需要接受多个参数,并且多个参数类型一致,可以简化成如下格式:
252 
253                   修饰符  返回值类型  方法名(参数类型...形参名);直接传递数据
254 
255                    等价与
256 
257                   修饰符 返回值类型 方法名(参数类型[] 形参名);方法调用时必须传递数组  
258 
259                   如果在方法书写时,这个方法拥有多参数,参数中包含可变参数,可变参数一定要写在参数列表的末尾位置
260 
261 */
262 
263 public class Demo{
264 
265     public static void main(String[] args){
266 
267         int sum = add(1,2,3);
268 
269        System.out.println(sum);
270 
271    }
272 
273    public static int add(int...arr){         
274 
275            int sum = 0; 
276            for (int i = 0; i < arr.length; i++) {
277            sum += arr[i];
278           }
279 
280            return sum;
281 
282    }
283 
284 }
285 
286 
287 
288 /*
289 
290 Collections集合工具类:
291 
292                                   static void shuffle(List<?> list)集合元素存储位置打乱
293 
294                                   static <T extends Comparable<? super T>> void  sort(List<?> list) 集合元素排序
295 
296 */
297 
298 /*
299 
300 集合嵌套: Collection集合嵌套、Map集合嵌套、Collection和Map集合嵌套
301                    ArrayList< ArrayList<String>>    Collection< ArrayList<String>>
302 
303                   HashMap<String , ArrayList<Person>>   ArrayList< Map<String , String>>
304 
305                   HashMap<String , HashMap<String , String>>    HashMap<String , HashMap<Person , Student>>
306 
307 */

 

posted @ 2020-04-10 15:03  蜡笔辛巴  阅读(194)  评论(0编辑  收藏  举报