码迷,mamicode.com
首页 > 其他好文 > 详细

集合框架

时间:2019-12-14 11:42:13      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:map接口   创建   永久   als   mod   span   速度慢   集合框架   val   

Collection:

Collection接口中定义了Collection对象共有的一些基本方法,这些方法分为基本操作、批量操作、数组操作。基本操作是针对单个元素的操作,批量操作是同时对一批元素进行操作,数组操作是将集合转化数组的操作。

 技术图片

技术图片

方法有:

size(); <!--返回当前集合中包含的元素个数,就是集合的长度。-->

isEmpty(); <!--判断集合中是否含有元素。-->

contains(); <!--判断集合中是否包含某一指定元素,返回一个boolean值。-->

add(); <!--向集合中添加某一元素。-->

remove(); <!--从集合中删除某一元素。-->

iterator(); <!--返回一个遍历器(Iterator类型),用来访问集合中的各个元素,可以用来遍历集合。-->

containsAll();<!--判断集合中是否包含某一指定集合中的全部元素。-->

 

Iterator接口(迭代器):

Iterator 接口是一种用于遍历集合的接口。所谓遍历,是指从自己和中取出每一个元素的过程。

在Collection接口中,有一个iterator()方法,通过该方法可以返回一个Iterator对象。通过这个独享,可以遍历集合中所有元素。

该接口中的方法有:

hasNext(); <!--如果集合中还有更多元素,该方法返回true。-->

next(); <!--返回集合的下一个元素。-->

remove(); <!--删除iterator返回的最后一个元素-->

遍历:

LinkedList ll = new LinkedList(); ? ll.add("a"); ? ll.add("asfa"); ? ll.add(22); ? System.out.println(ll); ? ll.addFirst("哈喽"); ? ll.addLast("再见"); for(Object obj : ll){ ? System.out.println(obj); ? }

Iterator it = ll.iterator(); ? while(it.hasNext()){ ? Object obj = it.next(); ? System.out.println(obj); ? }

List接口:

List接口继承自Collection接口,它有如下特点:

1.List中的元素是有顺序的。

2.List通常允许重复元素。

3.List的实现类通常支持null元素

List 接口继承自 Collection 接口,也就拥有 Collection 接口的方法。此外,它还重载了Collection接口的一些方法,使程序员可以通过索引值来对列表进行操作。

ArrayList:

ArrayList在概念上与数组类似,表示一组编入索引的元素,区别之处在于ArrayList没有预先确定的大小,其长度可按需增大。

LinkedList:

在java中链表就是自己实现了一个类,在勒种几率了前一个和后一个的地址每次查找都需要找到前一个或者后一个才能往前或往后找到。

 技术图片

技术图片

 

LinkedList 与 ArrayList:

1.ArrayList底层是数组的实现,LinkedList底层是链接的实现

2.ArrayList 查找速度快名单是删除和插入速度慢。

3.LinkedList 删除和插入的速度快,但是查询速度较慢。

4.LinkedList有自己独有的addFirst() addLast() removeLast() removeFirst()方法

 

<>泛型

所谓泛型,就是允许在定义类、接口时指定类型形式参数,这个类型形式参数将在声明变 量、创建对象时确定(即传入的实际参数)。JDK1.5 改写了集合框架中全部接口和类,为这些 接口和类提供了泛型支持,从而可以让我们在声明集合变量、创建集合对象时传入类型实际参数。

例如,JDK1.5 中对 Collection、List、Set、Map 等所有接口定义时,都指定了类型形式参数:

public interface Collection<E> extends Iterable public interface List<E> extends Collection public interface Set<E> extends Collection

Set:

Set 接口也继承自 Collection 接口,同时也继承了 Collection 接口的全部方法。它有如下特点:

1.Set类型容器中不能包含重复元素。当加入一个元素到容器中时候,要比较元素的内容是否存在重复的,所以加入Set类型对象容器的对象必须重写equals()方法。

2.元素可能有顺序,也可能没有顺序。

3.因为元素可能没有顺序,所以不能基于索引访问Set中的元素。

HashSet:

HashSet类是基于哈希算法的Set接口实现,它主要有如下几个特点:

1.当遍历HashSet时,其中的元素是没有顺序的。

2.HashSet中不允许出现重复元素。这里的重复元素是指由相同的哈希码,并且用equals();方法进行比较时,返回true的两个对象。

3.允许包含null元素。

TreeSet:

TreeSet类不仅实现类Set接口,还实现了SortedSet接口,从而保证集合中的对象按照一定的顺序排序。当向 TreeSet 集合中添加一个对象,会把它插入到有序的对象序列中。但是这种排序并不是按照对象添加的顺序排序。

独有的一些方法:

first(); <!--返回TreeSet中第一个元素-->

last(); <!--返回TreeSet中最后一个元素-->

pollFirst() <!--获取并删除第一个元素-->

pollLast() <!--获取并删除最后一个元素-->

 

Comparable接口:

该接口有一个 compareTo(Object o)方法,返回整型数据。对于表达式 x.compareTo(y),如果返回值为 0,则表示 x 和 y 相等;如果返回值大于 0,则表示 x大于 y;如果返回值小于 0,则表示 x 小于 y。TreeSet 集合调用对象的 compareTo()方法比较集合中的大小,然后进行升序排列,这种方式称为自然排序。

Map:

Map(映射)接口是java集合框架中不同于Collection接口的另一个重要接口,它对应的还在一种从键(key)到值(Value)的对应关系的集合。也就是说,Map类型的对象容器里面保存着两组对象,一组对象用于保存Map里的Key,另外一组用于保存Value。Key和Value可以是任何应用类型的数据。Key不能重复,但是Value可以重复。

方法:

get(); <!--返回与指定键相关的值。-->

put(); <!--向该映射中添加键值对。-->

remove();<!--从该映射中删除包含指定键的键值对。-->

isEmpty(); <!--如果该映射为空,则返回为true;-->

entrySet();<!--返回一个实现Map.Entry接口的对象集合。集合中每个对象都是底层Map中一个特定的键/值对。通过这个集合的迭代器,获得每一条键或值进行更改。-->

#####

HashMap:

HashMap是基于哈希算法的Map接口的实现。HashMap将它的键保存在哈希表中进行维护,键是唯一的。但是,HashMap并不保证键以特定顺序排列,特别是保证顺序永久不变。

HashMap类实现了Map接口,从具有Map接口的所有方法。为了保证HashMap能正常工作,和HashSe一样,要求当两个对象通过equals()方法比较为true时,这两个键对象的hashCode()方法返回的哈希码也一样。因此,我们应该在座位Key的类中重写hashCode()和equals方法。

 

 

 

工具类Collections和Arrays:

java集合框架中包含了Collections类和Array类这两个工具类,这两个类提供了包装器实现、数据结构算法和数组相关的应用。这两个工具类都提供了大量静方法,在操作集合和数组时,使用这两个工具类中的方法,可以大大减轻程序员编码量,提升开发效率,提高代码性能。

 

Collections:

该工具类中提供了大量方法,用于对集合元素进行排序、查询、修改等操作。这些方法都是静态方法。

Arrays类:

java集合框架不仅提供了Collections类用于操作集合,同时也提供了Arrays类用于操作数组,Arrays类包含用来操作数组(比如排序和搜索)的各种方法。

集合框架

标签:map接口   创建   永久   als   mod   span   速度慢   集合框架   val   

原文地址:https://www.cnblogs.com/zhuhaorong/p/12038498.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!