黑马程序员——Java基础之集合框架小结

------- android培训java培训、期待与您交流! ----------

1 集合框架 collection、 Map

Collection 是集合框架中的 一个顶层接口  表示一组对象  存放单列数据    List和Set是Collection的子接口,其中List 元素是根据添加的前后顺序存储的,是有序的;并且可以根据索引 访问元素,搜索元素,而Set  是一个不包括重复元素的collection 不允许存放两个相等的对象,而且Set集合中的元素是无序的

Map  也是集合框架中的顶层接口  存放键值对(双列数据)    
    
2 Collection和Map的集合框架图如下:
    
 Collection  集合框架的一个顶层接口,存储单列数据   表示一组对象,这些对象也称为collection的元素
 |
 |----List collection的子接口  元素根据添加的顺序存储,是有序的 并且可以根据索引访问和获取元素
 |     |--ArrayList  接口的实现类  底层数据结构:数组   不同步    线程不安全  长度是固定的
 |     |--LinkedList 接口的实现类  底层数据结构:链表   不同步    线程不安全  
 |     |--Vector     接口的实现类  底层数据结构:数组     同步          线程安全        大小根据需要增加或减少
 |
 |----Set collection的子接口 不包含重复元素 并且元素存储是按照内部的排序后存储,是无序的
       |--HashSet    接口实现类     底层数据结构 :哈希表  不同步 线程不安全
       |     依据 hashCode和equals 方法保证元素的唯一性  并且优先判断HashCode值,值相同时才会调用equals
       |
       |--TreeSet    接口实现类     底层数据结构: 二叉树   不同步 线程不安全
                     依据compareTo方法返回0 保证元素唯一性
                     可以对Set集合中的元素进行排序 ,实现方法有两种:
                       a 使元素自身具备比较性:实现Comparable接口,覆盖compareTo方法
                       b使集合自身具备比较性:在集合初始化时就有了比较方法,定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数。当两种排序都存在时,以比较器为主。

3 迭代器

迭代器是Collection集合中取出元素的方式,可以直接访问集合中的元素。所以将迭代器通过内部类的形式来进行描述,通过容器的iterator()方法获取该内部类的对象。

实例如下:

public static void  getElement()
{

ArrayList al = new ArrayList();

//1,添加元素。
al.add("java01");//add(Object obj);
al.add("java02");
al.add("java03");
al.add("java04");

Iterator it = al.iterator();//获取迭代器,用于取出集合中的元素。
while(it.hasNext())
{
sop(it.next());//打印集合元素
}

}

public static void sop(Object obj)//打印函数
{
System.out.println(obj);
}

4 Map集合的两种取出方式:

a  Set<k> keySet:将map中所有的键存入到Set集合。因为set具备迭代器。所有可以迭代方式取出所有的键,在根据get方法。获取每一个键对应的值。Map集合的取出原理:将map集合转成set集合。在通过迭代器取出。
b  Set<Map.Entry<k,v>> entrySet:将map集合中的映射关系存入到了set集合中,而这个关系的数据类型就是:Map.Entry
Entry其实就是Map中的一个static内部接口,这是因为只有有了Map集合,有了键值对,才会有键值的映射关系,这个关系属于Map集合中的一个内部事物,而且该事物在直接访问Map集合中的元素。

实例如下:

class MapTest 
{
public static void main(String[] args) 
{
Map<String,String> map = new HashMap<String,String>();

map.put("02","zh2");
map.put("03","wang3");
map.put("01","zh1");
map.put("04","zh3");


//将Map集合中的映射关系取出。存入到Set集合中。
Set<Map.Entry<String,String>> entrySet = map.entrySet();
Iterator<Map.Entry<String,String>> it = entrySet.iterator();
while(it.hasNext())//遍历该集合
{
Map.Entry<String,String> me = it.next();
String key = me.getKey();
String value = me.getValue();
System.out.println(key+":"+value);//打印键和值

}

Set<String> keySet = map.keySet();//先获取map集合的所有键的Set集合,keySet();
Iterator<String> it = keySet.iterator();//有了Set集合。就可以获取其迭代器。
while(it.hasNext())
{
String key = it.next();
String value  = map.get(key);//有了键可以通过map集合的get方法获取其对应的值。
System.out.println("key:"+key+",value:"+value);
}

}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值