1.Map集合的特点:
map集合是以键值对形式存在。
可以进行增删改查。
键可以为空
public static void main(String[] args) { Map hashmap=new HashMap(); //这是map集合添加数据的方式 hashmap.put("zs",19 ); hashmap.put("ls",19 ); hashmap.put("ww",19 ); hashmap.put("", 2); //这是map集合删除数据的方法 hashmap.remove("zs"); //这是map集合修改数据的方法 hashmap.put("ls", 20); //这是map集合遍历的方式:第一种为froeach的方法,但是得使用泛型 for (Object o : hashmap.entrySet() ) { Map.Entry m=(Entry) o; System.out.println("key: "+m.getKey()+" value:"+m.getValue()); }}
以上代码的运行结果为:
以上便是突出map集合特点的代码。
2.map集合遍历的方式
2.1第一种为froeach的方法,但是得使用泛型
for (Object o : hashmap.entrySet() ) { Map.Entry m=(Entry) o; System.out.println("key: "+m.getKey()+" value:"+m.getValue()); }
运行结果为:
2.2 第二种则是将map集合中的键存放在set集合中,通过set集合遍历,然后根据键来获取value值
Set set=hashmap.keySet(); for (Object o : set) { System.out.println("key: "+o+" value:"+hashmap.get(o)); }
运行结果为:
以上便是map集合的遍历方法
3.常用实现类HashMap
3.1实现类HashMap的作用:
package com.xzs.map; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; /* * 这是一个利用hashmap集合统计字母出项的次数的方法 */ public class Demo2 { public static void main(String[] args) { String s = "adfjakjdflkajlfjsalkfjdklqajwlekrjlkamfdklasjklrfejqkfnmsfdakhjfdklawjerklwjmfl"; char[] chars = s.toCharArray(); Map map = new HashMap(); for (char c : chars) { Object o = map.get(c); if (o == null){ map.put(c,1); }else { map.put(c,Integer.valueOf(o.toString())+1); }} for (Object c : map.entrySet()) { Map.Entry m=(Entry) c; System.out.println("key: "+m.getKey()+" value:"+m.getValue()); } } }
运行结果为:
由此可以看出HashMap的作用是可以用来统计字母出现的次数,多运用于验证码接口数据的接收
4.泛型
4.1泛型的作用:
将运行时产生的异常转换为编译期的错误 提高代码的健壮性
public static void main(String[] args) { // 将运行时产生的异常转换为编译期的错误 // 提高代码的健壮性 List list= new arrylist<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); for (Object o : list) { int num=(Object) o; if(num%2==1){ System.out.println(num); } } }
结果为:
由此我们可以看出泛型的重要性,它可以杜绝代码在运行过程中报错;
4.2泛型类
由此图可以看出当我们类为泛型类是添加的数据将被指定为泛型所指定的数据类型,且在后面的学习中泛型可以为我们减少许多代码量
/class CommonDao{ // public List list(Object o){ // System.out.println("数据库的通用查询方法..."); // return null; // } //} //class Book{ // //} //class Order{ // //} //class BookDao extends CommonDao{ // //} //class OrderDao extends CommonDao{ // @Override // public List list(Object o) { // return super.list(o); // } //} //使用泛型................... class CommonDao<T>{ public List<T> list(T o){ System.out.println("数据库的通用查询方法..."); return null; } } class Book{ } class Order{ } class BookDao extends CommonDao<Book>{ } class OrderDao extends CommonDao<Order>{ @Override public List<Order> list(Order o) { return super.list(o); } }
在上面的代码中可以看出以后的Dao方法的代码量将大大减少
5,集合框架工具类(Collections.Arrays)
5.1Collections的使用
package com.xzs.map; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Demo5 { public static void main(String[] args) { List<Person> set = new ArrayList<>(); set.add(new Person("zs", 18)); set.add(new Person("ls", 14));// distrinct set.add(new Person("ww", 24)); set.add(new Person("老六", 22)); set.add(new Person("zs", 18)); Object[] array = set.toArray(); for (Object object : array) { System.out.println(object); } System.out.println("======list集合中元素实现Comparable接口才能排序========"); Collections.sort(set); for (Object object : set) { System.out.println(object); } } } class Person implements Comparable<Person>{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } @Override public int compareTo(Person o) { return this.name.compareTo(o.name); } }
上列代码是Collections的使用方法结果为:
5.1Collections对于引用对象的条件
package com.xzs.map; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Demo5 { public static void main(String[] args) { List<Person> set = new ArrayList<>(); set.add(new Person("zs", 18)); set.add(new Person("ls", 14));// distrinct set.add(new Person("ww", 24)); set.add(new Person("老六", 22)); set.add(new Person("zs", 18)); Object[] array = set.toArray(); for (Object object : array) { System.out.println(object); } System.out.println("======list集合中元素实现Comparable接口才能排序========"); Collections.sort(set); for (Object object : set) { System.out.println(object); } } } class Person implements Comparable<Person>{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Person(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } @Override public int compareTo(Person o) { return this.name.compareTo(o.name); } }
以上可以看出应勇对象必须实现comparable
5.3Arrays
package com.xzs.map; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Demo6 { public static void main2(String[] args) { List list = new ArrayList(); list.add("b"); list.add("a"); list.add("c"); System.out.println(list); Collections.sort(list); System.out.println(list); Collections.sort(list, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o2.compareTo(o1); } }); System.out.println(list); Object[] objects = list.toArray(); System.out.println(objects); } public static void main(String[] args) { String[] arr = new String[]{"a","c","b"}; List<String> list = Arrays.asList(arr); Arrays.sort(arr, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o2.compareTo(o1); } }); System.out.println(list); // 数组变成List后,只是能够用集合的方法操作数组,不能改变数组长度不可变的既定事实 // Exception in thread "main" java.lang.UnsupportedOperationException // list.add("d"); System.out.println(Arrays.toString(arr)); } }
运行的结果为: