集合

Collection接口:

  set接口(没有顺序,不能相互equals,不允许重复):

    *HashSet---实现类(以哈希码表为底层实现机制的类);

    TreeSet---实现类(以二叉树*为底层实现机制的类);

    Set接口的方法没有自己定义的,全部继承自Collection接口;

    list接口(有顺序,可以重复):

    *ArryList---实现类(以数组为底层实现机制的类);

      查询速度快,但增删改的效率低;

    LinkedLis---实现类(以链表为底层实现机制的类);

      查询速度慢,但增删改的效率高;

 

写法:

  Collection c = new ArryList();

  直接写父类接口;

  好处:

    可以直接调用父类的所有方法,易维护;

  add()方法里只能传Object对象;

  remove()方法:

    通过判断两个对象是否相互aquals来确定是否该删除该对象,自定义的类需要重写父类的equals方法和HashCode方法;

    hashCode通常用来做索引, 一个对象通过它的hashCode的值可以找到它在内存中的地址,

所以两个对象如果equals了, 而且又要作为索引的情况下, hashCode的值必须相等;

二叉树:

  二叉树是每个结点最多有两个子树的树结构。

  通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。

  二叉树常被用于实现二叉查找树和二叉堆。

List接口常有的方法: 

  get(int index);传索引从0开始;
  set(int , Object)把一个索引上的值替换成传的值,有一个返回值要注意 !;
  add(Object)添加一个值;
  remove(int index)删除索引上的值
  remove(Object)删除值
  indexOf(Object)返回索引对象第一次出现的索引;
  lastIndexOf(Object)返回索引对象最后一次出现的索引;
  retainAll(Collection)----返回一个boolean值,
  当list的内容被改变的时候返回true, 否则返回false

 

List l1 = new ArrayList<>();
        l1.add("a");
        l1.add("c");
        l1.add("d");
        l1.add("e");
        l1.add("c");
        l1.add("d");
        List l2 = new ArrayList<>();
        l2.add("b");
        l2.add("b");
        l2.add("b");
        l2.add("b");
        l2.add("c");
        l2.add("d");
        List l3 = new ArrayList<>();
        l3.add("b");
        l3.add("b");
        l3.add("b");
        l3.add("b");
        l3.add("b");
        l3.add("b");
        boolean b1 = l1.removeAll(l2);
        boolean b2 = l1.removeAll(l3);
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(l1);
        System.out.println(l2);
        System.out.println(l3);
//第一个打印true,
//第二个打印falose,
//第三个打印[a, e],
//第四个打印[b, b, b, b, c, d]
//第五个打印[b, b, b, b, b, b]

 

posted @ 2018-09-06 22:08  k丶灵  阅读(72)  评论(0编辑  收藏  举报