|ू・ω・` ) Map的方法使用跟Set的使用没有很大的区别,最大的区别就在于:
Map集合中存放的都是一组组映射关系
都是以一个建对一个值
HashMap(底层结构:哈希表数据结构,效率高) Map<String, Object> mp = new HashMap<>(); TreeMap(底层结构:二叉树结构,可以进行排序) Map<student, String> map = new TreeMap<>();需求:学生作为键,地址作为值进行存储,名字年龄相同则被认定为一个人 重写好**hashCode()方法和equals()**方法
需求:按年龄进行排序
需求:统计字符串中字符出现次数,比如:(sjsdfsfsdfsfsdfsdfssdsa) 这个我们需先理清楚思路: 统计:
将字符串转换为字符数组,将这个字符串中的字符当作map的key值,将出现的次数作为values当字符第一次出现后,要去这个集合查找,若没有的话返回为null,那么就将values设置为1如果说不是第一次,那么就返回不为null,就将values++;ok,看代码
public static void main(String[] args) { String str ="sjsdfsfsdfsfsdfsdfssdsa"; System.out.println(charach(str)); } public static StringBuffer charach(String str) { Map<Character, Integer> map = new TreeMap<>(); char[] charArray = str.toCharArray(); for (char c : charArray) { Integer get = map.get(c); if(get==null) { map.put(c, 1); } else { map.put(c, ++get); } } StringBuffer sbf = new StringBuffer(); Set<Entry<Character, Integer>> entrySet = map.entrySet(); for (Entry<Character, Integer> entry : entrySet) { sbf.append(entry.getKey()+"("+entry.getValue()+")"); } return sbf; }Set的用法和Map是差不多的主要在于他们的方法:
增加 put(K key, V value) putAll(Map<? extends K,? extends V> m) 删除 clear() remove(Object key) 判断 containsKey(Object key) containsValue(Object value) isEmpty() 获取 get(Object key) size() values() //遍历时所要用到的 entrySet() keySet()Collections:是集合框架中的工具类,方法是静态的 如下一些:
Collections.sort(List list);按自然顺序排序Collections.reverse(List list); 强行将按自然顺序排列的顺序逆转,可以自己加入比较器,按自定义比较方法逆转。Collections.shuffle(List<?> list);使用默认随机源对指定列表进行替换。Arrays:是集合框架中的工具类,方法是静态的 如下一些:
Arrays.sort();排序Arrays.binarySearch();二分查找Arrays.equals();两个数组相等的判定:两个数组包含相同数量的元素,并且两个数组中的所有相应元素都是相等的。其实:增强for循环底层也是使用了迭代器获取的
如:
public static void main(String[] args) { printarr("first","second"); } public static void printarr(String...str){ for(String string:str){ System.out.println(string); //输出 first second } }每个方法最多一个变长参数,并且该参数的位置是方法的的最后
**注意,虽然这种方法可以重载,但是系统调用时会优先调用固定参数的方法
静态导入
概念:就是导入某个包里所有的静态成员
如:
import static java.util.system;