java容器 (一) Collection简介
来源:互联网 发布:银行家算法的例题详解 编辑:程序博客网 时间:2024/05/30 22:55
中间有好几天木有看了~接下来要抓紧咯~~
1. Collection接口
为解决在任意时刻任意位置创建任意数量的对象,Java实用类库提供了一套相当完整的容器类来解决这个问题。Java容器类类库的用途是“保存对象”。并将其划分为两个不同的概念:
- Collection:一个独立元素序列,这些元素都服从一条或多条规则;
- Map:一组“键值对”对象,允许使用键值来查找。
Java中,有一套设计优良的接口和类组成了Java集合框架Collection,使程序员操作成批的数据或对象元素极为方便。这些接口和类有很多对抽象数据类型操作的API,而这是我们常用的且在数据结构中熟知的。例如Map,Set,List等。并且Java用面向对象的设计对这些数据结构和算法进行了封装,这就极大的减化了程序员编程时的负担。程序员也可以以这个集合框架为基础,定义更高级别的数据抽象,比如栈、队列和线程安全的集合等,从而满足自己的需要。
public interface Collection<E> extends Iterable<E>JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
所有通用的 Collection 实现类(通常通过它的一个子接口间接实现Collection)应该提供两个“标准”构造方法:一个是 void(无参数)构造方法,用于创建空 collection;另一个是带有 Collection 类型单参数的构造方法,用于创建一个具有与其参数相同元素新的 collection。实际上,后者允许用户复制任何 collection,以生成所需实现类型的一个等效 collection。尽管无法强制执行此约定(因为接口不能包含构造方法),但是 Java 平台库中所有通用的Collection 实现都遵从它。如,ArrayList的构造函数(不全)
/** * Constructs a list containing the elements of the specified * collection, in the order they are returned by the collection's * iterator. * * @param c the collection whose elements are to be placed into this list * @throws NullPointerException if the specified collection is null */ public ArrayList(Collection<? extends E> c) { elementData = c.toArray(); if ((size = elementData.length) != 0) { // c.toArray might (incorrectly) not return Object[] (see 6260652) if (elementData.getClass() != Object[].class) elementData = Arrays.copyOf(elementData, size, Object[].class); } else { // replace with empty array. this.elementData = EMPTY_ELEMENTDATA; } }
boolean
add(E e)
确保此 collection 包含指定的元素(可选操作)。
boolean
addAll(Collection<? extends E> c)
将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。
void
clear()
移除此 collection 中的所有元素(可选操作)。
boolean
contains(Object o)
如果此 collection 包含指定的元素,则返回 true。
boolean
containsAll(Collection<?> c)
如果此 collection 包含指定 collection 中的所有元素,则返回 true。
boolean
equals(Object o)
比较此 collection 与指定对象是否相等。
int
hashCode()
返回此 collection 的哈希码值。
boolean
isEmpty()
如果此 collection 不包含元素,则返回 true。
Iterator<E>
iterator()
返回在此 collection 的元素上进行迭代的迭代器。
boolean
remove(Object o)
从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。
boolean
removeAll(Collection<?> c)
移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。
boolean
retainAll(Collection<?> c)
仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。
int
size()
返回此 collection 中的元素数。
Object[]
toArray()
返回包含此 collection 中所有元素的数组。
<T> T[]
toArray(T[] a)
返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。
2. Collections
public class Collections extends Object
此类完全由在 collection 上进行操作或返回 collection 的静态方法组成。它包含在 collection 上操作的多态算法,即“包装器”,包装器返回由指定 collection 支持的新 collection,以及少数其他内容。
如果为此类的方法所提供的 collection 或类对象为 null,则这些方法都将抛出 NullPointerException。
addAll(Collection<? super T> c, T... elements)
将所有指定元素添加到指定 collection 中。
nCopies(int n, T o)
返回由指定对象的 n 个副本组成的不可变列表。
replaceAll(List<T> list, T oldVal, T newVal)
使用另一个值替换列表中出现的所有某一指定值。
fill(List<? super T> list, T obj)
使用指定元素替换指定列表中的所有元素。
package rte;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class Test {public static void main(String []args){//利用ArrayList的构造函数<Collection c>来创建list//Collections.nCopies(int n, T o)返回由指定对象的 n 个副本组成的不可变列表List<StringAddress> list = new ArrayList<StringAddress>(Collections.nCopies(4, new StringAddress("Hello")));System.out.println(list);//Collections.fill(List<? super T> list, T obj) 使用指定元素替换指定列表中的所有元素Collections.fill(list, new StringAddress("World"));System.out.println(list);}}class StringAddress{private String s;public StringAddress(String s){this.s=s;}public String toString(){return super.toString()+" "+s;}}
输出
[rte.StringAddress@6d06d69c Hello, rte.StringAddress@6d06d69c Hello, rte.StringAddress@6d06d69c Hello, rte.StringAddress@6d06d69c Hello][rte.StringAddress@7852e922 World, rte.StringAddress@7852e922 World, rte.StringAddress@7852e922 World, rte.StringAddress@7852e922 World]
- java容器 (一) Collection简介
- java容器(一) Collection
- Java--容器(Collection)(一)
- Java里的容器 Collection 简介
- java容器类--------Collection接口解析(一)
- Java容器学习笔记(一) 容器中基本概念及Collection接口相关知识
- Java容器学习笔记(一) 容器中基本概念及Collection接口相关知识
- java.util.Collection体系源码解读<一>Collection简介
- 系统研究Java--容器(三)--Collection
- java 容器详解(collection,map)
- Java容器类--Collection
- Java 容器 collection hashCode
- java容器-Collection<E>
- java collection容器
- Java--容器(Collection)(二)
- Java容器------Collection接口
- Java 容器Collection(5)
- Java容器Collection
- 【Android笔记】MediaPlayer基本使用方式
- Android Studio使用中遇到V7包问题
- 周志华《机器学习》笔记汇总
- 5-22 龟兔赛跑 (20分)
- tanchao
- java容器 (一) Collection简介
- 引用和指针
- Fragment学习之旅(二)
- 2016夏季练习——dp
- Floyd判圈算法【区庆亮】
- 单源最短路算法HDU 2544 ( 最短路 )
- 【3001】均分纸牌
- Mybaits深入了解(三)----mybatis开发Dao的方法
- Android截图方法