---------------------- android培训、java培训、期待与您交流! ----------------------
Map集合:该集合存储键值对,一对一对往里存,而且要保证键的唯一性。
1、添加。
put(K key, V value)
putAll(Map<? extendsK,? extends V> m)
2、删除。
clear()
remove(Object key)//根据键来删除。键值唯一。将键值删除并返回对应的值。
3、判断。
containsKey(Object key)
containsValue(ObjectValue)
isEmpty()
4、获取。
get(Object key)
size()
values()
entrySet()
keySet()
Map
|--Hashtable:底层是哈希表数据结构,不可以存入null键null值。该集合是线程同步的。jdk1.0 效率低。
|--HashMap:底层是哈希表数据结构。允许使用null键null值。该集合是线程不同步的。将Hashtable替换。jdk1.2 效率高
|--TreeMap:底层是二叉树数据结构。线程不同步。可以用于给map集合中的键进行排序。(排序方式与TreeSet相似)
Map和Set很像。其实大家,Set底层就是使用了Map集合。
à可通过get方法的返回值是否为null来判断一个键是否存在。
à添加元素时,如果出现相同的键,那么后添加的值会覆盖原有键对应值,并且put方法会返回被覆盖的值(返回原来的值)。
àHashMap只允许一条记录的键为空,但允许许多条记录的值为空。
map集合的两种取出方式。[day16-04]
1、Set<k> keySet:将map中所有的键存入到Set集合中。因为Set集合具备迭代器。所以可以通过迭代方式取出所有的键,然后根据get方法,获取每一个键对应的值。
Map集合的取出原理:将map集合转成set集合,再通过迭代器取出。
2、Set<Map.Entry<k,v>>entryset:将Map集合中的映射关系存入到set集合中,而这个关系的数据类型就是Map.Entry.
Map.Entry 其实Entry也是一个接口,它是Map中的一个内部接口。
什么时候使用Map集合?
当发现数据之间存在映射关系时,就要先想到Map集合。
Map扩展:集合嵌套集合[day16-09]
集合框架中的工具类-----------------------------------------------day17
Collections类:
·对List排序:
public static <T extendsComparable<? super T>> void sort(List<T> list);
public static <T> voidsort(List<T> list,Comparator<? super T> c);
·获取最值:
public static <T extendsObject & Comparable<? extends T>> T max(Collection<? extendsT> coll);
public static <T> Tmax(Collection<? extends T> coll,Comparator<> extends T> comp);
·二分查找:
public static <T> intbinarySearch(List<? extends Comparable<? super T>> list,T key);
public static <T> intbinarySearch(List<? extends T> list,T key,Comparator<? super T> c);
如果没有找到返回-1
·替换反转:
public static <T> voidfill(List<? super T> list,T obj);fill方法可以将List集合中所有元素替换成指定元素。
public static <T>boolean replaceAll(List<T> list,T oldVal,T newVal);
public static voidreverse(List<?> list);
public static <T>Comparator<T> reverseOrder();
public static <T>Comparator<T> reverseOrder(Comparator<T> cmp);
public static voidswap(List<?> list,int i,int j);
public static voidshuffle(List<?> list);
Arrays类:操作数组
数组变集合:
publicstatic <T> List<T> asList(T... a);
List<String>list = Array.asList(arr); Arrays中的asList()方法。
返回一个受指定数组支持的固定大小的列表(将数组变成List集合)。
将数组变成List集合的好处:可以使用集合的思想和方法来操作数组中的元素。
注意:将数组变成集合,不可以使用集合的增删方法,因为数组的长度是固定的。[day17-7]
①如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
②如果数组中的元素都是基本数据类型,那么会将该数组作为集合中的元素存在。
集合变数组:
Collection接口中的toArray()方法。
1、指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size。
当指定类型的数组长度大于了集合的size,就不会创建新的数组,而是使用传递进来的数组(会有null的值)。所以创建一个刚刚好的数组最优。使用.size()方法即可。
2、为什么要集合变数组?
为了限定对元素的操作。不需要进行增删了。
增强for循环
JDK1.5新特性,只要实现了Iterable接口(此接口只有一个方法:iterator())的对象都可以成为“foreach”语句的目标,即都可以使用增强for循环。
格式:
for(数据类型 变量名:被遍历的集合(Collection)或者数组)
{
}
局限:只能取出,不能修改。对集合进行遍历,只能获取集合元素,但是不能对集合进行操作。
而迭代器除了遍历,还可以进行remove集合中元素的动作,如果是用ListIterator,还可以在遍历过程中进行增删改查的动作。
传统for循环与增强for循环有什么区别?
高级for循环有一个局限性,必须有被遍历的目标。建议在遍历数组的时候,还是使用传统for循环语句。
可变参数
publicstatic void show(String str,int… arr) [day17-19]
JDK1.5新特性,其实就是上一种数组参数的简写形式,不用每一次都手动建立数组对象,只要将要操作的元素作为参数传递即可,隐式将这些参数封装成了数组。
使用时注意:可变参数一定要定义在参数列表的最后面。
静态导入(StaticImport)
JDK1.5新特性。
import static java.util.Arrays.*;//导入的是Arrays这个类中的所有静态成员。
import static java.lang.System.*;//导入了System类中所有静态成员。
注意:
·当类名重名时,需要指定具体的包名。
·当方法重名时,要指定具体所属的对象或者类。
其他对象
System
System:类中的方法和属性都是静态的。
out:标准输出,默认是控制台(屏幕)。
in:标准输入。默认是键盘。
描述系统的一些信息。
获取系统属性信息:Properties getProperties()
因为Properties是hashtable的子类,也就是Map集合的一个子类对象。那么可以通过map的方法取出该集合中的元素。
该集合中存储的都是字符串,没有泛型定义。
Runtime对象。
该类中并没有提供构造函数。说明不可以new 对象。那么就会直接想到该类中的方法都是静态的。
发现该类中还有非静态方法。说明该类肯定会提供方法获取本类对象,而且该方法是静态的,而且返回值是本类类型。该方法是static Runtime getRuntime();
由这个特点可以看出该类使用了单例设计模式完成。
Math
ceil :double d = Math.ceil(12.34);//ceil返回大于指定数据的最小整数。
sop("d="+d);//d=13.0
floor:double d1 =Math.floor(12.34);//floor返回小于指定数据的最大整数。
sop("d1="+d1);//d1=12.0
round:long l = Math.round(12.34);//四舍五入
sop("l="+l);//12
pow:double d2 = Math.pow(2,3);//23
sop("d2="+d2);//8
随机数:publicstatic double random()
double d = Math.random()//[0,1)包括0,不包括1的随机小数。
int d = (int)(Math.random()*10+1);//1到10之间的随机整数。
---------------------- android培训、java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima