1、Collection:
集合框架的由来:因为每一个容器对象的自身的数据结构不同,所以对它们进行单独的描述和对象封装,并非断的向上抽取共性内容,这样变形成了集合框架。
概念:集合就是一个容器、用来存储对象、长度可变。
理解:其实班级就是一个容器,班上的每一个学生都是单独封装了功能的对象,因为班级中的人数由于有人请假天天都再转变,所以长度是可变的,
常见方式:
1、增加:
add();增加一个元素
addAll();增加一部份元素。
2、删除:
Remove();删除一个元素,会返回boolean类型,其实用到是equals方式,所以判断是不是有符合要求的元素。若是删除成功会改变集合的长度。下面同理。
removeAll();删除全数
Clrea();清空容器
总结:在这里要尤其注意,面试题中常常考到。
3、判断:
Contains();是不是包括,也就说要所有的都包括在其中才算包括,不然不算包括。
isEmpty();集合是不是为空
Size();集合长度。
4、取:
retainAll();取交集。
理解总结:
班级就是一个容器,班级中进来一名新生就是Add()添加一个元素,来了一堆同窗就是addAll,班上出去一个学生就是remove删除一个,出去一部份就是removeAll删除一部份,班级是不是有人,isEmpty,班上是不是包括张三contains,班上有多少人size。班上是不是包括隔壁班的同窗retainAll.去交集。
集合利用细节:
1、直接存储大体数据类型值也是可以的,因为后有自动装箱,会将大体数据类型转成对象,绝对不行。Eg:(3)
2、集合对象中存储的实际上是对象的元素的引用。
3、Add的参数是Object类型,可以接收所有的类型的对象,会出现向上转型,掏出元素时类型仍是Object不能利用具体对象的特有内容,想要利用特有内容向下转型。Eg:Object obj="obj";想要掏出访问子类的特有方式,向下转型,String s=(String)();sop());
|--List:有序列表(存取顺序是一致的)因为该子体系元素中有索引或角标,可以存储重复的元素。
常常利用方式:
果为真说明两个元素相同,不存储,所以往hashSet集合中存储自概念对象时要覆写hasCode方式和equals方式,
重点掌握上述保证唯一性的方式和哈希表内存原理实现。
|--linkedHashSet
以元素的插入顺序来保护集合的连接表,允许以插入的顺序的集合中迭代的
怎么去理解?
HashSet<String> hs=new HashSet<String>();
        ("B");
        ("A");
        ("D");
        ("E");
        ("C");
        (java集合排序怎么实现"F");
        "HashSet:"+hs);
        LinkedHashSet<String> lhs=new                                    LinkedHashSet<String>();
        ("B");
        ("A");
        ("D");
        ("E");
        ("C");
        ("F");
        "LinkedHashSet:"+lhs);
        TreeSet<String> ts=new TreeSet<String>();
        ("B");
        ("A");
        ("D");
        ("E");
        ("C");
        ("F");
"TreeSet:"+ts);
结果:
HashSet:[D, E, F, A, B, C]
LinkedHashSet:[B, A, D, E, C, F]
TreeSet:[A, B, C, D, E, F]
从结果可以知道对于LinkedHashSet集合可以保证元素依照添加的顺序掏出元素,而TreeSet集合可以对集合中的元素进行自然排序。
|--TreeSet
用于给set集合中元素依照指定的顺序进行排序,低层是二叉树结构,线程是不同步的,
两种排序方式:
1、让元素自身具有比较功能,就是强制让元素去实现comparable接口,覆盖compareTo方式。这时元素具有的自然排序。可是若是元素自身不具有比较的功能,获取具有的比较功能不是所需要的。这时该排序方式就不能用了。
2、让集合自身具有比较功能,需要概念比较器,其实就是将实现了Comparator接口的子类对象作为参数传递给TreeSet集合的构造函数,让treeSet集合一创建就具有了比较功能。该子类必需要覆盖compare方式。
掌握二叉树数据结构的特点:不明白?
2、Map:
特点:
1、它是集合框架中的顶层
2、它存储的是键值对。
3、Map集合中必需保证键的唯一性。
4、若是存储键值对时,键重复,新值覆盖旧值。其实存储的就是一种映射关系。
常见方式:
增加:
Put();
putAll();
删除:
Clrea();
Remove(key);
判断:
containKey();
containValue();
获取:
get(Object key);
Size();
Values();
entrySet();将map集合中的映射关系
        其实Entry也是一个接口,它是map接口中的一个内部接口。
        Interface Map{
            public static interface Entry{
                public abstract Object getKey();
                public abstract Object getValue();
            }
        }   
        keySet();将map中所有的键都存入了set集合,因为set具有迭代器,所以可以迭代方式掏出所有的键,在按照get方式获取每一个键对应的值。
        Map集合的掏出原理:将map集合转成set集合,在通过迭代器掏出.
|--HashMap:低层是哈希表数据结构,该集合是不同步的,允许利用null键和null值。效率高
|--LinkedHashMap:保证依照插入的顺序进行掏出。
|--TreeMap:低层是二叉树数据结构,线程不同步,可以用于给Map集合中的键进行排序。
3、Iterator
迭代器原理:其实就collection这个集合公共掏出方式,因为每一个容器的自身的数据结构不同,它们的掏出方式也是不同的,要按照每一个容器的特点来概念特定的掏出方式,而掏出方式直接在访问容器中的元素,所以将掏出方式概念在容器的内部,是一个内部类,而对外提供访问接口。这样可以通过接口访问任何的collection容器中的元素,所以它的出现降低了耦合性,咱们只用面对Iterator接口,和利用接口就可以够了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。