一、集合的概念

  何为集合,集合就是相当于一个对象的容器。集合是类似数组的一个作用。既然有了数组,为何还要有集合呢,由于数组对象一旦创建,其大小便不可以更改,我们只能往数组中存放创建时数量的对象。而集合中的长度却是动态可变化的,我们可以往集合中添加任意数量的对象。并且我们可以通过集合更方便地实现数据结构如队列,栈等等。在集合中我们更可以定义自己想要的操作。

二、集合的定义

  java中集合类的基本接口是Collection,实现集合接口,需要实现集合接口中的一下方法:

 class ExtendCollection<T> implements Collection<T>{

 public void forEach(Consumer<? super T> action) {
// TODO Auto-generated method stub } public int size() {
// TODO Auto-generated method stub
return 0;
} public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
} public boolean contains(Object o) {
// TODO Auto-generated method stub
return false;
} public Iterator<T> iterator() {
// TODO Auto-generated method stub
return null;
} public Object[] toArray() {
// TODO Auto-generated method stub
return null;
} public <T> T[] toArray(T[] a) {
// TODO Auto-generated method stub
return null;
} public boolean add(T e) {
// TODO Auto-generated method stub
return false;
} public boolean remove(Object o) {
// TODO Auto-generated method stub
return false;
} public boolean containsAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
} public boolean addAll(Collection<? extends T> c) {
// TODO Auto-generated method stub
return false;
} public boolean removeAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
} public boolean removeIf(Predicate<? super T> filter) {
// TODO Auto-generated method stub
return false;
} public boolean retainAll(Collection<?> c) {
// TODO Auto-generated method stub
return false;
} public void clear() {
// TODO Auto-generated method stub } public Spliterator<T> spliterator() {
// TODO Auto-generated method stub
return null;
} public Stream<T> stream() {
// TODO Auto-generated method stub
return null;
} public Stream<T> parallelStream() {
// TODO Auto-generated method stub
return null;
}

  在Collection接口中使用了Iterator接口,Iterator接口的内部组成如下: 

public interface Iterator<E>{
    void remove();
    E next();
    boolean hasNext();   }

  通过实现我们的Iterator,Iterator就是一个迭代器,通过以下代码我们就可以循环遍历集合中的每一个元素:

        List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c"); // 获取迭代器
Iterator iterator = list.iterator();
// 判断集合中是否存在下一个元素
while(iterator.hasNext()){
// 获取集合中的元素
String str = iterator.next().toString();
System.out.println(str);
}

  另外我们还可以使用for each去循环遍历集合中的元素:这种方式在实际上原理就是使用了上面的代码进行遍历。

  for(String item: list){
System.out.println(item);
}

 for each关键字用于实现Iterable接口的对象,Iterable接口对象中只有一个方法,即获取迭代器的方法

public interface Iterable<E>{
Iterator<E> iterator();
}

  java中的集合框架接口

  

  java中的集合框架类

  

三、视图的概念

  java中的视图,可以说其实就是一个具有限制的集合对象,只不过这里的不是集合对象,而是一个视图对象。例如:这里有一个Test类

Test[] tests = new Test[10];
List<Test> testList = Arrays.asList(tests);

  这里的testList是一个视图对象,具有访问数组元素set,get的方法。但是如果调用改变数组的方法就会抛出异常。所以可以说视图对象可以说是具有限制的集合对象。

 利用java类库中的方法我们可以获得不可更改视图,子视图等等,这些视图对于原对象具有不同的操作权限。

四、java中集合和数组的转换
   

  将数组转换成集合

String[] values = {"my","a"};
HashSet<String> test = new HashSet<String>(Arrays.asList(values));

  将集合转换成数组

String[] values = test.toArray(new String[0]);

java中的集合和视图的更多相关文章

  1. java中的集合操作类(未完待续)

    申明: 实习生的肤浅理解,如发现有错误之处.还望大牛们多多指点 废话 事实上我写java的后台操作,我每次都会遇到一条语句:List<XXXXX> list = new ArrayList ...

  2. Java中的集合框架-Collections和Arrays

    上一篇<Java中的集合框架-Map>把集合框架中的键值对容器Map中常用的知识记录了一下,本节记录一下集合框架的两个工具类Collections和Arrays 一,Collections ...

  3. JAVA笔记整理(九),JAVA中的集合

    在工作中,我们经常需要将多个对象集中存放,可以使用数组,但是数组的长度一旦固定之后是不可变的,为了保存数量确定的数据,我们可以使用JAVA中的集合. 在我看来,JAVA中的集合可以看作是一个特殊的数据 ...

  4. Java中的集合(七)双列集合顶层接口------Map接口架构

    Java中的集合(七)双列集合顶层接口------Map接口 一.Map接口的简介 通过List接口,我们知道List接口下的集合是单列集合,数据存储是单列的结构.Map接口下是一个键值对(key-v ...

  5. Java 中的集合接口——List、Set、Map

    Java 中的集合接口——List.Set.Map 什么叫集合:集合就是Java API所提供的一系列类的实例,可以用于动态存放多个对象.这跟我们学过的数组差不多,那为什么我们还要学集合,我们看看数组 ...

  6. 实现java 中 list集合中有几十万条数据,每100条为一组取出

    解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...

  7. java中对集合对象list的几种循环访问

    java中对集合对象list的几种循环访问的总结如下 1 经典的for循环 public static void main(String[] args) { List<String> li ...

  8. 菜鸟日记之 java中的集合框架

    java中的集合框架图 如图所示:java中的集合分为两种Collection和Map两种接口 可分为Collection是单列集合和Map的双列集合 Collection单列集合:继承了Iterat ...

  9. C#与java中的集合区别

    集合一般的操作       插入: add       删除: remove       查找: contains,remove java中的集合 注意哪些是接口,哪些是实现类 使用集合的时候 1. ...

随机推荐

  1. Unity---动画系统学习(5)---使用MatchTarget来匹配动画

    1. 介绍 做好了走.跑.转弯后,我们就需要来点更加高级的动画了. 我们使用自带动画学习笔记2中的FQVault动画,来控制人物FQ. 在动画学习笔记4的基础上添加Vault动画. 添加一个参数Vau ...

  2. Qt 学习之路 2(45):模型

    Home / Qt 学习之路 2 / Qt 学习之路 2(45):模型 Qt 学习之路 2(45):模型  豆子  2013年2月26日  Qt 学习之路 2  23条评论 在前面两章的基础之上,我们 ...

  3. mac 添加环境变量

    1.Mac系统的环境变量,加载顺序为: a. /etc/profile b. /etc/paths c. ~/.bash_profile d. ~/.bash_login e. ~/.profile ...

  4. springmvc相关配置和用法

    目录如下: 一.spring mvc 核心类与接口 二.spring mvc 核心流程图 三.spring mvc DispatcherServlet说明 四.spring mvc 父子上下文的说明 ...

  5. Python web前端 02 CSS

    Python web前端 02 CSS 一.选择器 1.CSS的几种样式(CSS用来修饰.美化网页的) #建立模板 复制内容--->SETTING---> Editor -----> ...

  6. window 安装 python

    官网地址下载安装包 点击下载 会自动识别你当前的系统,或者点击你需要安装的平台 或者选择其他版本 执行安装 高级选项说明: Install for all users 所有用户可使用 Associat ...

  7. LeetCode109. 有序链表转换二叉搜索树

    109. 有序链表转换二叉搜索树 问题描述 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超 ...

  8. HDU - 2256 矩阵快速幂 带根号的递推

    题意:求$ [(\sqrt{2}+\sqrt{3})^{2n}] mod 1024 $ 分析: 把指数的2带入 原式等于 $ [(5+2\sqrt{6})^n] $ 有一个重要的结论是n次运算后其结果 ...

  9. PKI公钥基础设施简介

    PKI(Public Key Infrastructure)公钥基础设施是提供公钥加密和数字签名服务的系统或平台,目的是为了管理密钥和证书.一个机构通过采用PKI 框架管理密钥和证书可以建立一个安全的 ...

  10. c# 多数值区间判断是否有重叠

    /// <summary> /// 金额区间判断帮助类 /// </summary> public static class DecimalRangeHelper { /// ...