黑马程序员->集合类 (2 Map
来源:互联网 发布:linux查看内核版本 编辑:程序博客网 时间:2024/06/06 13:02
--------------------android培训、java培训、期待与您交流! ------------------
3.0.Map......................................................................
3.1.....Map 集合:该集合存储键值对,一对一对往里存,而且保证键的唯一性。
1.添加 put(K key, V value); putAll(Map <? extends K,? extends V> m)
//添加元素,如果出现添加时,有相同的键,那么后添加的值会覆盖原有的键对应值。
//并 put 方法会返回被覆盖的值。
2.删除 clear(); remove(Object key);
3.判断 containsValue(Object value); contaninsKey(Object key); isEmpty();
4.获取 get(Object key); size(); values();
//可以通过get方法的返回值来判断一 个键是否存在。通过返回 null 来判断。
Map
|--Hashtable :底层是哈希表数据结构,不可以存入 null 键 null 值。该集合是线程同步的。jdk 1.0,效率低。
|--HashMap :底层数据结构是哈希表,运行使用 null 键 null 值,该集合是不同的,将 Hashtable 取代,jdk 1.2.效率高。
|--TreeMap :底层数据结构是二叉树,线程不同步。可以用于给 Map 集合中的键进行排序。
//和 Set 很像,气势 Set 集合底层就是使用了 Map 集合。
Map 集合的两种取出方式:
1.Set <k> keySet :将 Map 中所有的键存入到 Set 集合。因为 Set 具备迭代器。所有可以迭代方式取出所有的键,
再根据 get 方法,获取每一个键对应的值。
//Map集合的取出原理:将map集合转成set集合。再通过迭代器取出。
2.Set<Map.Entry<k,v>> entrySet: 将 Map 集合中的映射关系取出,存入到 Set 集合中。
// Map.Entry 其实 Entry 也是一个接口,它是 Map 接口中的一个内部接口。
interface Map
{
public static interface Entry
{
public abstract Object getKey();
public abstract Object getValue();
}
}
4.0..................................Collections 集合框架的工具类
4.1... sort 方法,
//根据元素的自然顺序对指定列表按升序排序。
public static <T extends Comparable<? super T>>void sort(List<T> list)
//接收一个list集合,该集合必须是Comparable的子类(就是要具备比较性)。
直接 Collections.sort(传list集合) 调用就可以给对应list 排序。
public static <T>void sort(list<T> list,Comparator<? super T> c)
//还可以接收自定义的比较器来自定义比较。
4.2.....max 方法
public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll)
//跟sort 方法用法差不多,只是求最大值,返回值类型是 T(传的是什么就返回什么),可以接收任意集合。
//也可以接收自定义比较器,用法和sort一样。
4.3....binarySearch (二分查找)方法
public static <T>int binarySearch(List<? extends Comparable<? super T>> list, T key)
//因为二分涉及到角标,所以只能传 List 集合,返回角标数。并传入要找的类型(和集合同类型)
//也可以接收自定义比较器,用法和sort一样。
4.4......fill(使用指定元素替换指定列表中的所有元素)---> 替换翻转
public static <T>void fill(List<? super T> list, T obj)
//
4.5.....replaceAll (替换元素中某个元素)
4.6.....reverse (翻转--打印)
4.7.....reverseOrder(反转自然顺序--> 结果反着打印)
public static <T> Comparator<T> reverseOrder()
//返回一个比较器,逆自然顺序排序。
//它还可以接收一个自定义比较器,把自定义的比较方法反转。
4.8..... synchronizedList
public static <T> List<T> synchronizedList(List<T> list)
//接受一个List集合,返回一个加锁后的安全的List集合。
4.9..... swap
public static void swap(List<?> list, int i,int j)
//在指定列表的指定位置处交换元素。
4.10.... shuffle
public static void shuffle(List<?> list)
//随机对指定列表进行置换
5.0.....................................Arrays
用于操作数组的工具类。 里面都是静态方法。
5.1... public static <T> List<T> asList(T... a)
//传入数组,返回List集合。 即把数组编程List集合。
// 把数组变集合可以使用集合的思想和方法来操作数组中的元素。
但是,将数组变集合,不可以使用集合的增删方法。因为数组的长度是固定的。
//可以用 contains(); get(); indexOf(); subList();
如果增删了,会发生 UnsupportedOperationException 异常
如果数组中的元素都是对象,那么变成集合时,数组中的元素就直接转成集合中的元素。
如果数组中的元素都是基本数据类型,那么会将该数值作为集合中的元素存在。
5.2.........//集合变数组
toArray();方法
1.当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的 size
当指定类型的数组长度小于了集合的size,就不会创建数组了,而是使用传递机那里的数组(空出来的角标为 null )。
// SO,创建一个刚刚好的数组最优。
2.将数组变集合,为了限定对元素的操作。不让进行增删。
6.0..增强 for 循环 forEach
for (数据类型 变量名: 被遍历的集合 )
{
}对集合进行遍历,只能获取元素,但是不能对集合进行操作。
//迭代器除了遍历,还可以进行remove 集合中元素的动作。
如果是用 ListIterator ,还可以在遍历过程中对集合进行增删改查的动作。
传统 for 和高级 for 的区别:
高级for有一个局限性,必须有被遍历的目标。
建议在遍历数组的时候,还是希望用传统 for 因为传统 for 可以定义角标。
for (String s : al)
{
System.out.println(s);
}
7.0..可变参数
(函数)方法(接受的类型... 数组名称)
show(int... arr)-----> 用三个点代替。
可变参数:
其实就是数组参数的简写形式,不用每一次都手动的建立数组对象。
只要将要操作的元素作为参数传递即可,隐式的将这些参数封装成了数组。
//注意事项:可变参数一定要定义在参数列表最后面。
8.0.....静态导入
import static java.util.*;
导入的是 Arrays 这个类中的所有静态成员。
9.0.....System 类
类中的方法和属性都是静态的。
System.getProperties(); 描述系统的一些信息。获取系统属性信息。 Properties
因为 Properties 是 Hashtable 的子类,也就是 Map 集合的一个子类对象。
那么可以通过 Map 的方法取出该集合中的元素。//该集合中存储的都是字符串。没有泛型定义。
import java.util.*;
class SystemDemo
{
public static void main(String[] args)
{
String v = System.getProperty("os.name");
S.op(v);
Properties prop = System.getProperties();
for (Object obj : prop.keySet() )
{
String value = (String)prop.get(obj);
S.op(obj+"----"+value);
}
}
}
10.0................Runtime 类
Runtime 对象。该类并没有提供构造函数。说明不可以 new 对象,所以该类中的方法应该是静态的,可是该类中的方法还
有非静态方法。说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,返回值是本类对象。
//由这个特点可知该类使用了单例设计模式来完成。
public static Runtime getRuntime();
11.0....Date 类
获取当前时间。 Date d = new Date();
//已过时 jdk 1.1 时的
12.0....Calendar 类
jdk 1.1 以后就用 Calendar 代替了 Date 。 Calendar c = Calendar.getInstance();//获取当前时区,创建一个时间。
用 c.get() 方法来获取当前的年get(Calendar.YEAR)月get(Calendar.MONTH)
get(Calendar.DAY_OF_MONTH)日get(Calendar.DAY_OF_WEEK)。
还可以用add(int field, int anount) 为给定的日历字段加或减指定的时间量。
13.0....Math-Random 类 //数学类
Math.ceil(double ) ---> 返回大于指定数据的最小整数。(返回 double)
Math.floor(double )---> 返回小于指定数据的最大整数。(返回 double)
Math.round(long )----> 返回四舍五入。
Math.pow(int a,int b)-> 返回 a 的 b 次幂。
Math.random() -------> 返回 大于等于 0.0 小于 1.0 的随机数。
util 包内也有 Random 对象。
Random r = new Random();
r.nextInt(x); //返回类型是int,求 x 一下的随机数。
----------------------android培训、java培训、期待与您交流! --------------------
- 黑马程序员->集合类 (2 Map
- 黑马程序员---集合-Map集合,Collections类
- 黑马程序员-----Map集合
- 黑马程序员--Map集合
- 黑马程序员 Map集合
- 黑马程序员-Map集合
- 黑马程序员--集合Map
- 黑马程序员---Map集合
- 黑马程序员-Map集合
- 黑马程序员---集合:Map
- 黑马程序员-Map集合
- 黑马程序员-------map集合
- 黑马程序员---Map集合
- 黑马程序员---Map集合
- 黑马程序员--Map集合
- 黑马程序员-------Map集合
- 黑马程序员-Map集合
- [黑马程序员]集合--Map
- 黑马程序员->集合类 (1
- struts2+spring+hibernate整合时所需的jar包
- 基础知识
- struts---No result defined for action org.crazyit.app.action.LoginAction and result error
- [全程建模]UML被肆意乱用,怎么可能解决问题
- 黑马程序员->集合类 (2 Map
- NorFlash与NandFlash对比
- SpringMVC—介绍
- 报表中如何去掉字符串中的首字符或末字符
- android 瀑布流效果(仿蘑菇街)
- Solr学习总结-改进Solr性能
- SpringMVC—所需要包
- 用位图索引技术实现超大规模数据量的分组算法
- SpringMVC—Dispatcher配置