------- android培训java培训、期待与您交流! ----------

集合:

为什么出现集合类?

•  面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。



数组和集合类同是容器,有何不同?

•  数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。



集合类的特点:
•  集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象。
 
集合框架中的常用接口:
Collection接口有两个子接口:List(列表) ,Set(集)

                   List:可存放重复元素,元素存取是有序的。

                   Set:不可以存放重复元素,元素存取是无序的。
 
 
 
 
 
 
 
List接口中常用类:
Vector:线程安全,但速度慢,已被

ArrayList替代。

ArrayList:线程不安全,查询速度快。

LinkedList:链表结构,增删速度快。


取出List集合中元素的方式:

get(int index):通过脚标获取元素。
iterator():通过迭代方法获取迭代器对象。


 

有序集合和无序集合的区别:

有序集合:集合里的元素可以根据key或index访问

无序集合:集合里的元素只能遍历。

有序集合在属性的增加,删除及修改中拥有较好的性能表现。

迭代
迭代是取出集合中元素的一种方式。

因为Collection中有iterator方法,所以每一个子类集合对象都具备迭代器。
 
什么是迭代器呢?

其实就是集合的取出元素的方式。如同抓娃娃游戏机中的夹子。

迭代器是取出方式,会直接访问集合中的元素。所以将迭代器通过内部类的形式来进行描述。通过容器的iterator()方法获取该内部类的对象。

迭代注意事项

迭代器在Collcection接口中是通用的,它替代了Vector类中的Enumeration(枚举)。

迭代器的next方法是自动向下取元素,要避免出现NoSuchElementException。

迭代器的next方法返回值类型是Object,所以要记得类型转换。
 
 
 Collection定义了集合框架的共性功能。


1,添加

    add(e); 添加元素

    addAll(collection);  将指定 collection 中的所有元素都添加到此 collection 中
 
 
import java.util.ArrayList;

public class CollectionDemo1
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); ArrayList a = new ArrayList(); a.add("04");
a.add("05");
a.add("06");
al.addAll(a);
System.out.println("集合:"+al+"集合长度:"+al.size());
}
}




 

2,删除

    remove(e); 移除某一元素

    removeAll(collection); 移除此 collection 中那些也包含在指定 collection 中的所有元素
    clear(); 清空所有元素
 
import java.util.ArrayList;

public class CollectionDemo2
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); ArrayList al1 = new ArrayList(); al1.add("01");
al1.add("05");
al1.add("03");
System.out.println("集合:"+al1+"集合长度:"+al1.size()); al.remove("01");
System.out.println("集合:"+al+"集合长度:"+al.size()); al.removeAll(al1);//去交集
System.out.println("集合:"+al+"集合长度:"+al.size()); al.clear();
System.out.println("集合:"+al+"集合长度:"+al.size());
}
}

3,判断 

    contains(e); 判断是否包含某一元素

    isEmpty(); 判断是否为空

 
import java.util.ArrayList;

public class CollectionDemo3
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); System.out.println(al.contains("01"));
System.out.println(al.isEmpty());
}
}




 

4,获取

    iterator();

    size();
 
import java.util.ArrayList;
import java.util.Iterator; public class CollectionDemo4
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); for (Iterator it = al.iterator();it.hasNext(); )
{
System.out.println(it.next());
}
}
}

 

5,获取交集。

    retainAll();
 
 
import java.util.ArrayList;

public class CollectionDemo5
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println("集合:"+al+"集合长度:"+al.size()); ArrayList al1 = new ArrayList(); al1.add("01");
al1.add("03");
al1.add("06");
System.out.println("集合:"+al1+"集合长度:"+al1.size()); al.retainAll(al1);//取交集
System.out.println("集合:"+al+"集合长度:"+al.size());
}
}
 

6,集合变数组:

    toArray();


1,add方法的参数类型是Object。以便于接收任意类型对象。

2,集合中存储的都是对象的引用(地址) 
 
 
import java.util.ArrayList;

public class ListDemo
{
public static void main(String[] args)
{
ArrayList al = new ArrayList(); al.add("01");
al.add("02");
al.add("03");
System.out.println(al); Object[] obj = al.toArray();
for (int i=0;i<obj.length;i++)
{
System.out.println(obj[i]);
}
}
}

 

------- android培训java培训、期待与您交流! ----------

  
 

黑马程序员——JAVA基础之简述集合collection的更多相关文章

  1. 黑马程序员——JAVA基础之简述面向对象,类,变量,匿名对象

    ------- android培训.java培训.期待与您交流! ---------- 面向对象: 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 强调的是功能行为 面向对象 将 ...

  2. 黑马程序员——JAVA基础之Map集合

    ------- android培训.java培训.期待与您交流! ---------- Map集合: 该集合存储键值对.一对一对往里存.而且要保证键的唯一性. 和Set很像,其实Set底层就是使用了M ...

  3. 黑马程序员——JAVA基础之List集合

    ------- android培训.java培训.期待与您交流! ---------- Collection : |--List:元素是有序的,元素可以重复.因为该集合体系有索引.         | ...

  4. 黑马程序员——JAVA基础之简述设计模式

    ------- android培训.java培训.期待与您交流! ---------- 设计模式(Design Patterns) 设计模式(Design pattern)是一套被反复使用.多数人知晓 ...

  5. 黑马程序员——JAVA基础之set集合

    ------- android培训.java培训.期待与您交流! ---------- Set:       元素是无序(存入和取出的顺序不一定一致),元素不可以重复.    Set接口中常用的类: ...

  6. 黑马程序员——JAVA基础之简述多线程,两种创建多线程的方式

    ------- android培训.java培训.期待与您交流! ---------- 多线程: 进程和线程: 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者 ...

  7. 黑马程序员——JAVA基础之简述 类的封装

    ------- android培训.java培训.期待与您交流! ---------- 类的封装(Encapsulation)  封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式. 封装优 ...

  8. 黑马程序员——JAVA基础之Vector集合

    ------- android培训.java培训.期待与您交流! ---------- 基本已被淘汰 枚举就是Vector特有的取出方式.枚举和迭代器很像.其实枚举和迭代是一样的.   因为枚举的名称 ...

  9. 黑马程序员——JAVA基础之简述 类的继承、覆写

    ------- android培训.java培训.期待与您交流! ---------- 继承的概述: 多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只 ...

随机推荐

  1. android平台手电筒开发源代码

    android平台手电筒开发源代码,AndroidManifest.xml文件的入口是startapp,这个文件没上传上来,大家可以自己写. 1. [代码]android 1 2 3 4 5 6 7 ...

  2. python利用or在列表解析中调用多个函数.py

    python利用or在列表解析中调用多个函数.py """ python利用or在列表解析中调用多个函数.py 2016年3月15日 05:08:42 codegay & ...

  3. UITableViewCell 自适应高度 ios8特性

    这篇文章介绍了在一个动态数据的 table view 中,cell 根据 text view 内容的输入实时改变 cell 和 table view 的高度.自动计算 cell 高度的功能使用 iOS ...

  4. 2016 - 1- 22 NSURLConnetction --- POST请求

    一:与上一篇博客中的GET方法类似  只不过需要多注意,如果要改变请求的类型,需要生成NSMutableURLRequest对象才可以设置请求的类型. NSURL *url = [NSURL URLW ...

  5. C++中的::operator new, ::operator delete

    一般在使用new  和 delete的时候,做了两件事情,一是空间的配置( new 是分配,delete是回收),而是调用对象的析构函数 但是也有办法将这两个过程分开 那就是显式的调用::operat ...

  6. javascript splice

    //arrayObject.splice(index,howmany,element1,.....,elementX)//index 必需.规定从何处添加/删除元素.(0)//howmany 必需.规 ...

  7. (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)

    Spring要把xml配置中bean的属性实例化为具体的bean,"依赖注入"是关卡.所谓的"依赖注入",就是把应用程序对bean的属性依赖都注入到spring ...

  8. 算法(第4版)-1.1.1 Java程序的基本结构

    开始之前,引用书中的一段话: "学习算法的主要原因是它们能节约非常多的资源,甚至能够让我们完成一些本不可能完成的任务.在某些需要处理上百万个对象的应用程序,设计优良的算法甚至可以将程序运行的 ...

  9. php大力力 [022节]php编程要有一种态度:渴望遇见麻烦

    2015-08-27 php大力力022.php编程要有一种态度:渴望遇见麻烦 不能一遇到问题和麻烦,就烦躁焦躁. 写程序,写代码,调试实验就是天天遇见不可预期的错误bug,这是常态.老生常谈,要适应 ...

  10. Fractal Tree

    尝试使用递归方式实现一棵简单的分形树,给出初始点的坐标,在此基础上根据坐标轴旋转的规则计算出子树干与根节点的坐标关系,依次递归画出左子树干和右子树干,并提供一个递归的深度用于控制画的子树的数目. 在二 ...