集合--Collection

迭代器:Iterator接口

interface Iterator
{
boolean hasNext();
Object next();
}

//获取集合中的对象
Iterator<E> iterator()

所有的内部类都是实现了Iterator接口的内部类
内部类可以直接操作集合中的对象

/*
Iterator ite = col.iterator();
while(ite.hasNext())
{
//获得一个对象
Object obj = ite.next();
System.out.println(obj);
}
for(int i = 0;i<col.size();i++)
{

}

for(Iterator ite = col.iterator();ites.hasNext());)
{

}

while(!col.isEmpty())
{
col.remove();//返回被删除的对象
}

*/

/*
存储多个类型的对象:
Obejct[] arr = new Object[10];
数组的缺陷是:
数组的容量固定
*/

集合:(Collection接口)
java.util.*;
可以存储不同类型的对象,而且随着存储的对象的增加容量自动扩大

Collection:
**iterator():获取集合中的对象
--List:
存储的对象是有序的
集合中对象的顺序和添加对象的顺序是一致的,可以重复的
List特有的方法都是可以操作下标的方法
--ArrayList:
底层使用的数据结构是数组
线程不安全的
查找速度快,增删速度慢
--LinkedList:
底层使用的数据结构是链表
线程不安全的
查找速度慢,增删速度快
--Vector:
底层使用的数据结构是数组
线程安全的(被ArrayList替代)
查找速度快,增删速度慢,被ArrayList替代
--Set:
存储的对象是无序的,不可重复的
--HashSet:
底层使用的数据结构是哈希表
线程不安全
--TreeSet:
底层使用的数据结构是二叉树
线程不安全

Vector:
动态数组
早期使用Enumeration接口进行枚举
Enumeration e = v.elements();

while(e.hasMoreElements())
{
Object obj = e.nextElements();
System.out.println(obj);
}

LinkedList:
**addFirst:
**addLast:

**getFirst://获取的元素不存在出现 NoSuchElementException
**getLast:

**removeFirst://
**removeLast:

从jdk 1.6之后出现以下方法:

**offerFirst:
**offerLast:

**peekFirst://获取元素不存在返回null
**peekLast:

**linkFirst:
**linkLast:

/*
使用LinkedList实现队列

入队--把对象存入集合
**addLast()
出队--把对象从集合删除
**removeFirst()
判断队列是否为空
**isEmpty()

*/

ArrayList:

/*
去掉集合中重复的对象

新建一个list2
遍历旧集合
如果list2中不包含这个对象,添加
**contains(obj)
如果list2中包含,不添加

*/

/*
contains判断是否包含某个对象的依据?

依据boolean equals(Object obj)方法的返回值

*/

/*
直接输出List<Class>的话,输出的是Class的hash值

解决:
在class中定义:
public String toString()
{
return ...;

}

*/

/*
去掉List<class>中相同内容的class

在class中重写equals方法

public boolean equals(Object obj)
{

if(!(obj instanceof Student))//如果obj不是Student类型
throws new RuntimeException("类型错误");

Student stu = (Student)obj;

return this.age = stu.age && this.name.equals(stu.name);

}

*/

HashSet:
在使用add方法添加对象时就保证了对象的唯一

/*
HashSet无序的原因

数据结构是哈希表,根据哈希算法得到位置,导致的无序

*/

/*
HashSet保证对象唯一的方式

在添加对象时,先比较得到对象的hash值和集合中对象的hash值分别进行比较
如果和所有对象的hash值都不相同,将对象直接添加到集合
如果相同,使用equals()方法比较内存地址是否相同
如果相同,认为是同一对象,不添加
如果不同,认为是不同的对象,加入集合
int hashCode()
boolean equals()

*/

/*
去掉Hash<class>中相同内容的class

在class中重写hashCode 和 equals方法

public int hashCode()
{
return name.hashCode() + age * 33;
}

public boolean equals(Object obj)
{

if(!(obj instanceof Student))//如果obj不是Student类型
throws new RuntimeException("类型错误");

Student stu = (Student)obj;

return this.age = stu.age && this.name.equals(stu.name);

}
*/

TreeSet:
在使用add方法添加对象时会对添加的对象进行排序
排序方式一:
集合中对象所属的类实现了Comparable接口中的compareTo()方法
排序方式二:

/*
TreeSet保证对象唯一的方式:
集合中对象所属的类实现了Comparable接口中的compareTo()方法
compatreTo()方法的返回值是0

*/

/*
去掉TreeSet<class>中相同内容的class

在class中重写compareTo()

public int compareTo(Object obj)
{

if(!(obj instanceof Student))//如果obj不是Student类型
throws new RuntimeException("类型错误");

Student stu = (Student)obj;

int num = this.age - stu.age;

return num == 0 ? this.name.compatrTo(stu.name) : num;
}
*/

时间: 2024-10-12 10:08:25

集合--Collection的相关文章

java集合Collection接口

collection集合 Map集合 Collection接口 Collection接口是List.Set和Queue接口的父接口,该接口里定义的方法既可用于操作Set集合,也可用于操作List和Queue集Collection提供了大量添加.删除.访问的方法来访问集合元素.主要的方法如下:

使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据

数据集(DataSet).数据表(DataTable).集合(Collection)概念是.NET FrameWork里提供数据类型,在应用程序编程过程中会经常使用其来作为数据的载体,属于ADO.NET的一部分.今天我们WCF分布式开发步步为赢第8节的内容:使用数据集(DataSet).数据表(DataTable).集合(Collection)传递数据.本节内容除了介绍几个类型概念外的,同样会详细给出代码的实现过程.此外我们会分析这几种数据类型的优势和缺点,以及在面向对象的服务开发过程中如何解决

黑马程序员——java基础——集合(Collection)

 黑马程序员--java基础--集合(Collection) ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 集合框架的构成及分类,如下图: 1.为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式. 2.数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 3.

在含有null值的复杂类的集合(Collection)中取最大值

在日常编程中,经常遇到要在一组复杂类的集合(Collection)中做比较.取最大值或最小值. 举个最简单的例子,我们要在一个如下结构的集合中选取包含最大值的元素: public class Class<T> where T : struct { public T? Value { get; set; } } var ints = new List<Class<int>>() { new Class<int>() { Value = 2 }, new Cla

java基础(五)--- 集合collection

集合 collection: Collection 层次结构中的根接口: Collection的功能概述: * 1:添加功能 * boolean add(Object obj):添加一个元素 * boolean addAll(Collection c):添加一个集合的元素 * 2:删除功能 * void clear():移除所有元素 * boolean remove(Object o):移除一个元素 * 3:判断功能 * boolean contains(Object o):判断集合中是否包含指

Java集合 - Collection

Ref:http://blog.csdn.net/liulin_good/article/details/6213815  http://www.cnblogs.com/averey/p/4306166.html 一.java.util.Iterator<E>接口 迭代器 1 package java.util; 2 3 public interface Iterator<E>{ 4 // Return true iteration has more elements 5 bool

java之集合Collection 3个例子

package cn.itcast_01; import java.util.ArrayList; import java.util.Collection; /* * 集合的由来: * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. * 而要想存储多个对象,就不能是一个基本的变量,而应该是一个容器类型的变量,在我们目前所学过的知识里面,有哪些是容器类型的呢? * 数组和StringBuffer.但是呢?Strin

Java基础集合Collection Map的概述

概述: 1,jse-collection分类,主要讲解Collection和Map接口的子类及其接口和相关工具类(不含线程安全的集合类). 2,本节介绍一下整体集合框架的结构图. 一.关于java集合涉及到的基本数据结构和算法的理论(这里试试简单的给大家一些参考). 数组(Array),在中间位置插入.删除效率低下,但是按位置索引查找快.链(Linked),在中间位置插入.删除效率高,按位置索引查找效率低下.树.散列. ---------------集合(Set),无序.不重复的原始集合.列表(

集合Collection

集合 因为容器中数据结构不同.容器有很多种,不断的共性功能抽取,形成了集合体系-->集合框架称之为collection接口 集合框架 Collection接口中的共性功能 1.添加 Boolean add(Object obj);一次添加一个 Boolean addAll(Collection c);将制定容器中的所有元素添加 2.删除 void clear(); boolean remove(object o); boolean remove(collection c); 3.获取长度 int

集合——Collection

为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类. 数组和集合类同是容器,有何不同? 数组虽然也可以存储对象,但长度是固定的:集合长度是可变的.数组中可以存储基本数据类型,集合只能存储对象. 集合类的特点: 集合只用于存储对象,集合长度是可变的,集合可以存储不同类型的对象. Collection接口概述(它是一个接口,不是对象): 是Collection层次结构中的根接口. Collection 表示一组对象,这些对象也称为 co