1.Map集合
Map集合石一个双列结合 双列集合:当前的集合是按照键值对的形式进行key----value 特点:键值对中的键是不可以重复的,值是可以重复的2.Map集合的方法
clear() 从此映射中移除所有映射关系(可选操作) put():向集合中添加数据 containsKey(Object key) 看看是否包含有某一个键K containsValue(Object value) 看看是否包含有某一个值 get(Object key) 根据键获取值 没有就返回null isEmpty() 判断集合是否为空 putAll(Map<? extends K,? extends V> m) 将一个集合赋值到另外一个集合 remove(Object key) 根据key删除含有key的键值对 size():返回那个map集合中键值对的数量3.双列集合的遍历方式总结:
1:获取map集合中的所有键 keySet() 2:获取map集合中的所有值 values()3.将Map集合中的键和值封装成一个对象
entrySet() Set<Entry<String, String>> entrySet = maps.entrySet(); //双列集合就转成了单列的集合 Iterator<Entry<String, String>> it = entrySet.iterator(); while(it.hasNext()){ Entry<String, String> entry = it.next(); System.out.println("key===="+entry.getKey()+" "+"value==="+entry.getValue()); }4.注意:
1:在map集合中如果存在相:同的键的话那么后面的值会覆盖前面的值
2:在hashMap的存储下,数据是没有顺序的 小技巧:在Java中如果集合的前面含有hash字样那么集合的存储都是基于Hash算法而来 3:集合中的泛型中的K可以是任意的类型 4:集合泛型中的值可以是什么任意类型5.HashMap
思考一个问题:HashMap是如何控制集合中键不重复的? HashMap在存储数据的时候,首先将当前添加到集合中的键的HashCode值拿出来,和集合中已经存在的键的HashCode值进行比较,如果比较了没有相等的那么就存储当前需要添加的数据,如果比较了存在hashCode值相等的情况那么再比较相应的equqls()方法是否返回true,如果返回了true说明存在那么就不插入该数据,如果返回false那么就将元素局插入集合中6.TreeMap
问题:因为是键值对,所以我们需要弄清楚是按照键来进行排序的呢?还是按照值来进行排序的 根据键来进行排序的1.字符串的大小的比较
首先比较的是对应位置上的字符 如果对应位置上的字符都相等的话那么比较的是字符串的长度 如果对应位置上的字符不相等的话那么后面的比前面的大 2.TreeMap的排序原理是根据二叉树(红黑树)来进行排序的 7.Java中常用的类 1.String---------->字符串的常量----->不变 当我们执行字符串的部分操作的时候实际上是从新创建了对象,并不是在原来的对象上面进行是改变----->效率低 String类的常用的方法 charAt(int index) 获取指定位置的字符 concat(String str) 将指定字符串连接到此字符串的结尾并返回 不改变也不能改变原有的字符串。 contains(CharSequence s) 看一个字符串中是否包含了 一个字符(括号里面这个) endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 equals(Object anObject) 比较两个字符串时候相等 equalsIgnoreCase(String anotherString) 忽略大小写的比较 getBytes() 将字符串转换成byte数组 getBytes(Charset charset) 将字符串转换成byte数组 并且给他指定个编码 indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引 replace(char oldChar, char newChar) 将某一个字符替换成一个新的字符 split("")将字符串进行分割 startsWith(String prefix) 判定字符串是否以某个字符开头 substring(int beginIndex) :从某个位置开始截取字符串 url.substring(5,8) 从某个位置开始到某个位置结束的截取字符串 toCharArray() 将此字符串转换为一个新的字符数组 toLowerCase() 将字符串中所有的字符转换成小写 toUpperCase()将字符串中所有的字符都转换成大写 trim() :去掉字符串首位的空格 String.valueOf(12345):将其他的类型转换成字符串 2.StringBuffer---->字符串的变量 capacity() 返回当前容量 charAt(int index) 返回此序列中指定索引处的 char 值。 delete(int start, int end) 删除从某个位置开始到某个位置结束的字符 返回的是删除后的字符 deleteCharAt(int index) :删除指定位置的字符 indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引 length() :返回的是这个字符串的长度3.StringBuilder---->字符串的变量
4.注意:
在运行效率的问题上 StringBuilder>StringBuffer>String StringBuilder的API和StringBuffer的API基本一致 5.区别: SringBuffer():这个家伙是线程安全的 StringBuilder():这个家伙是线程不安全的 在单线程操作的情况下官方建议采用StringBuilder 6.System类在Android里面用的比较多的是 使用该类来进行内存的回收 以及库的加载 currentTimeMillis() 返回以毫秒为单位的当前时间。 exit(int status) 终止当前正在运行的 Java 虚拟机 System.gc():通知垃圾回收期回收垃圾 load(String filename) 从作为动态库的本地文件系统中以指定的文件名加载代码文件。 static void loadLibrary(String libname) 加载由 libname 参数指定的系统库。8.Date日期这个类
SimpleDateFormat 类 Date(long date) ---->初始化一个带有时间戳的Date对象SimpleDateFormat format=new SimpleDateFormat("yy年MM月dd日 hh点mm分ss秒");
String time = format.format(new Date(System.currentTimeMillis())); System.out.println(time);