集合笔记

集合

  1. 集合中删除非字符串对象,不能直接写值(默认为下标),应转为包装类。

  2. ArrayList和Vector区别:底层都是基于数组实现,但ArrayList未考虑线程安全问题,并对一些算法上做了优化,Vector线程安全。

  3. ArrayList和LinkerList区别:ArrayList基于数组实现,查询快,增删慢,LinkerList基于链表实现,查询慢增删快,有着自己方法:addFirst();addLast();removeFirst();addLast();

  4. List接口特点:有序,有下标,可重复。

  5. LinkerList:java中链表就是自己实现一个类,在类中记录了前一个和后一个地址,每一次查询都要找到前一个或后一个才能往前或者往后找到。

  6. Set接口特点:无下标,无序,不能重复。

  7. foreach循环

  8. 迭代器:Iterator it = list.iterator(); while(it.hasNext()){syso(it.next)}

    NoSuchElementException: Iterator类的next( )方法在同一循环中不能出现两次。

  9. 泛型:无泛型问题:(1)想要创建只保存一类对象,但其他类对象也可以放入。(2)对象放入集合丢失对象状态信息,系统只知道Object,要强转,增加编程复杂度,强转容易出类型转换异常。

  10. 基本类型泛型要用对应的包装类。

  11. TreeSet有序排序要求(实体类直接实现):放入的对象必须是实现comparable接口,重写comparTo方法。

    或手写另外一个类,(内部类实现comparator接口);

    comparable(lang包);comparator(util包)

  12. Iterator接口中方法:hasNext:集合有更多元素,返回true;

    next:返回下一个元素;

    remove:删除iterator最后一个元素。

  13. TreeSet基本方法:first(last)返回首(尾)元素;pollFirst(last)删除首(尾)元素;

    Object height/lower(Object boj):返回集合中严格大于/小于给定元素的最小/大元素。

     

  14. 使用sort(一个参数)的方法,必须实现computable接口;

    如果不想实现接口,sort(泛型集合,实现了Comparator接口的类);

  15. Map键值对,

    存值 map.put(1,"张三");

    取值 map.get(1);键不能重复;

    获取所有key:map.keySet();

    获取所有值:Collection<> stus = map.values();

    获取map的entrySet:Set<Map,Entry<String,Student>>entry=map.entrySet();

    如果把 Map 中的所有 Key 放在一起,就组成了一个 Set 集合(所有 Key 没有顺序,而且不 能重复),实际上 Map 接口中确实有一个 keySet()方法,用于返回 Map 中所有 Key 组成的 Set 对象。而所有 Value 放在一起,就组成一个可以重复的,没有次序的 Collection 集合。Map 中也 提供了一个 Values()方法,用于返回 Map 中所有 Value 组成的 Collection 对象。

  1. 内部类:只在当前类的内部使用,(界面,操作)Person.Body b = new Person().new Body();

  1. Collections.shuffle(洗牌)

posted @ 2019-12-06 16:13  嘉贝  阅读(112)  评论(0)    收藏  举报