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

——- 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值