欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java之集合框架,

来源: javaer 分享于  点击 15482 次 点评:93

java之集合框架,


数组 集合
数组是固定长度的数据类型是固定的,集合是可变长度的且数据类型亦可变。 数据多了用对象存,对象多了用集合或数组存。 java.util包中                     Collection 收集集合             List(元素是有序的可重复,因有索引)        set(无序,无索引)  ArrayList LinkedList Vector                    HashSet TreeSet
每一个容器对数据的存储方式都有不同,这个存储方式称之为:数据结构。
共性方法     add(obj);//参数类型是Object,以便于接收任意类型对象              //集合中存储的是对象的引用(地址)     size();     remove();     clear();     contains();     isEmpty();     iterator();     retainAll();//交集 a中只会保留b中相同的元素     removeAll();
framework
迭代器 iterator 就是集合的取出元素的方式 Iterator it = a.iterator();//获取迭代器,用于取出集合中的元素 it.next();//获取元素 while(it.hasNext()){     it.next(); } for(Iterator it = a.iterator();it.hasNext();){//局部变量会回收,优化内存使用     it.next(); } 例:         HashMap<String, Integer> resultMap = new HashMap<String, Integer>();         resultMap.put("123", 123);         resultMap.put("23", 23);         resultMap.put("123", 123);         resultMap.put("33", 33);         Set<Entry<String, Integer>> set = resultMap.entrySet();
        Iterator<Entry<String, Integer>> it = set.iterator();//获取迭代器,用于取出集合中的元素 //        it.next();//获取元素         while(it.hasNext()){             System.out.println(it.next());         }         for(Iterator<Entry<String, Integer>> it2 = set.iterator();it.hasNext();){//局部变量会回收,优化内存使用             System.out.println(it2.next());         }
取出动作不足以用一个函数体现,封装成对象;取出动作和方式不一样 取出类在集合内部(内部类) 取出方式定义在集合的内部,这样取出方式就可以直接访问集合内容的元素。 那么取出方式就被定义成了内部类。 而每一个容器的数据结构不同,所以取出的动作细节也不一样。但是都有共性内容判断和取出,那么可以将这些共性抽取。 这些内部类都符合一个规则,该规则就是Iterator,对外提供的方法iterator();
List集合共性方法 特有方法:凡是可以操作角标的方法都是该体系特有的方法。 增:     add(index,element);     addAll(index,Collection); 删:     remove(index); 改:     set(index,element); 查:     get(index);     subList(from,to);     listIterator(); List集合特有的迭代器,ListIterator是Iterator的子接口。 在迭代时,不可以通过集合对象的方法操作集合中的元素。因为会发生ConcurrentModificationException异常。 所以,在迭代时,只能用迭代器的方法操作元素,可是Iterator方法是有限的,只能对元素进行判断、取出、删除的操作。 如果想要其他的操作如添加、修改等,就需要使用其子接口,ListIterator。 该接口只能通过List集合的listIterator方法获取。
List集合具体对象的方法     ArrayList  底层的数据结构是数组结构,查询修改速度快,但是增删稍慢。线程不同步默认长度是10,超过15%增长新建数据,并将原数组copy过来。     LinkedList 底层使用的是链表数据结构,查询修改慢,增删快。     Vector(集合框架之前)     底层是数组数据结构,线程同步
Vector中的枚举  枚举就是Vector特有的取值方式 和迭代器很像 其实枚举和迭代是一样的 因为枚举的名称以及方法名称都过长,被取代了。     elements(); hasElements(); nextElement();
LinkedList 特有方法:     addFirst();     addLast();offerLast();     getFirst();peekFirst();     getLast();获取元素但不删除元素     removeFirst();获取元素,但元素被删除,若集合无元素会出现NoSuchElementException pollFirst();若集合无元素返回null。     removeLast(); while(!link.isEmpty()){//不遍历的情况下取出所有元素     removeFirst(); }
boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。更确切地讲,当且仅当此 collection 至少包含一个满足(o==null ? e==null : o.equals(e)) 的元素 e 时,返回 true
List集合判断元素是否相同,依据是元素的equals方法;remove也调用了equals方法。
Set集合 元素是无序(存入和取出的顺序不一定一致),元素不可以重复     Set集合的功能和Collection是一致的         |--HashSet:底层数据结构是哈希表,线程非同步         |--TreeSet:底层数据结构是二叉树 HashSet     Hash表中hash值相同时,位置是否一样,判断是同一对象 取出:迭代 唯一性:通过元素的两个方法,hashCode和equals来完成,如果元素的HashCode值相同,才会判断equals是否为true
判断和删除的依据     依赖的方法是HashCode和equals
TreeSet     可以对Set集合中的元素进行排序,当主要条件相同时,一定要判断次要条件     保证元素唯一性的依据是compareTo方法return 0;     TreeSet排序的第一种方式:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法,这种方式也称为元素的自然顺序,或者叫做默认顺序。 二叉树


     
















相关文章

    暂无相关文章
相关栏目:

用户点评