黑马程序员------学习笔记(6)集合

来源:互联网 发布:dapaolu域名更换mp4 编辑:程序博客网 时间:2024/06/15 07:12

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

Collection,set,list
Collection各元素之间没有指定的顺序,允许有重复元素和多个null元素
Set各元素之间没有指定的顺序,不允许有重复源素,最多允许有一个null元素对象
List各元素之间有指定的顺序,允许有重复的元素和多个null元素对象

List接口对collection进行了简单的扩充,它的具体实现类常用的有arrayList 和linkedList
你可以讲任何东西放到一个list容器中,并在需要时从中取出
arrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此他的随机访问速度极快,而LinkedList得内部实现是链表,它适合于在链表中间需要频繁进行插入和操作
在具体应用时可以根据需要自由选择,千亩按说的iterator只能对容器进行向前遍历,而listIterator则继承了iterator的思想,并提供了对list进行双线遍历的方法

Set几口也是collection的一种扩展。而与list不同的是,在set中的对象元素不能重复,也就是说你不能把同样的东西两次都放入同一个set中,它的常用具体实现有hashSet和treeset类
hashSet能快速定位一个元素,但是你放到hashset中的对象需要实现hashCode()方法,它使用了羡慕按说服哦的hash码算法,而treeset则将放入其中的元素按顺序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个使用类compatable和comparator

一个类是可排序的,它就应该事先comparable接口。优势多个类具有相同的排序算法,那就不需要在没分别重新定义相同的排序算法,只要实现conparator接口即可,结合框架中还有两个很是有你的公用类
Collections和arrays,cillections提供了对一个collection容器进行诸如排序、复制、查找和填充等一些非常有用的费那个发,arrays则是对一个数组进行类似的操作

Map是一种把键对象和值对象进行关联的容器,而且一个值对象又可以使一个map,以此类推,这样就可能新城一个多集英社,对于键对象来说,向set一样,一个map容器中的键对象不允许重复,这是为了保持超找结果的一致性,过有两个键对象一样,那你想得到那个键对象对应的之对象就有问题了,可能你得到的并不是你想的那个之对象,结果会造成混乱,所以键的唯一性很重要,这也是符合集合的性质。的那个然在使用过程中,某个键对象锁对应的之对象可能会发生变化,这是会按照最后一次修改的值对象与键对应。对于之对象没有唯一性的要求

你可以将多个键都映射到一个值对象上,这样不会发生任何问题(不过对你的使用却可能造成不便,你不知道你得到的到底是哪一个键所对应的值对象)。Map有两种比较常用的事项:Hashmap和treemap
Map也是用到了哈希码的算法,一遍快速查找一个键,treeMao则是对键按顺序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从treeMap中指定一个方位以取得其子map。键和值的关系很简单,用put方法即可将一个键与一个值独享相关联。用get()可能得到与此key对喜爱那个锁对应的值对象

  1. 容器的分类
    1.1 collection:一组各自独立的元素,即其内部每个位置仅持有一个元素
    1.2 list:以元素安插的次序来村饭位置元素,不会重新排列
    1.3 set:不接受重复元素,它会使用自己内部的一个排列机制
    1.4 map:一群成对的键值对象,即所有持有的是键值对
    map中不允许有重复的key

1.Collection接口是List、Set、Queue接口的父接口。

public class CollectionTest {    public static void main(String[] args) {        Collection c = new ArrayList();        //添加元素        c.add("小明");        c.add(12);        //删除元素        c.remove(12);        System.out.println("集合中是否包含\"小明\"字符串"+c.contains("小明"))        Collection b = new HashSet();        b.add("小明");        //用c集合减去b集合的元素        c.removeAll(b);        //b集合只剩下c集合里也包含的元素        b.retainAll(c);    }}

2.迭代器遍历集合

public class Test {    public static void main(String[] args) {        Array c = new ArrayList();        //添加元素        c.add("小明");        c.add("小王");        c.add("小张");        Iterator i = c.iterator();        while(i.hasNext()){            //返回的数据是object类型,需要强制类型转换            String name=(String)i.next();            //打印            System.out.println(name+"\n");            //判断如果是小王,就删除            if(name.equals("小王")){                i.remove();            }        }        }}

3.增强for循环遍历集合

public class Test {    public static void main(String[] args) {        Array c = new ArrayList();        //添加元素        c.add("小明");        c.add("小王");        c.add("小张");        // 元素类型 元素名:集合名        for(String name:c){            //打印            System.out.println(name+"\n");            //判断如果是小王,就删除            if(name.equals("小王")){                i.remove();            }        }        }}

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

0 0
原创粉丝点击