java自学之旅(4)集合类
来源:互联网 发布:淘宝虚拟交易能退款吗 编辑:程序博客网 时间:2024/05/29 16:52
java.util 包中提供了一些集合类,这些集合类又被称为容器。
提到容器就会想到数组,集合类与数组的不同之处在于:数组的长度是固定的,集合的长度是可变的;数组用来存放基本类型的数据,集合用来存放对象的引用。常用的集合有List、Set、Map集合。
collection是一个接口,定义了集合相关的操作方法,其有两个子接口:List与Set。
List:可重复集
Set:不可重复集
元素是否重复取决于元素的equals的比较结果。
集合中存储的都是引用类型元素,并且集合只保存每个元素对象的引用,而并非将元素对象本身存入集合。
Collection接口是层次中的跟接口。构成Collection的单位成为元素。Collection接口通常不能直接使用。
Collection接口常用方法:
add(E e) //将指定的对象添加到该集合中
remove(Object o) //将指定的对象从该集合中移除
isEmpty() //返回布尔值,用于判断当前集合是否为空
iterator() //返回在此Collection的元素上进行迭代的迭代器,用于遍历集合中的对象
size() //返回int值,获取该集合中元素的个数
contains(Object o) //返回布尔值,用于判断给定元素是否被包含在集合中
注意:集合在判断元素是否被包含在集合中是根据对每个元素用equals方法进行比较后的结果。通常有必要重写equals()保证contains()方法的合理结果。
void clear() //用于清空当前集合
package mycollection;import java.util.ArrayList;import java.util.Collection;import java.util.HashSet;import java.util.Iterator;/** * 测试Collection * * @author unique_19 * */public class TestCollection {public static void main(String[] args) {testRef();System.out.println("*********************************************");testAdd();System.out.println("*********************************************");testContains();System.out.println("*********************************************");testSizeAndClearAndIsEmpty();}/**测试集合持有对象**/public static void testRef(){Collection<Cell> cells = new ArrayList<Cell>();//实例化集合对象cells.add(new Cell(1,2));//向集合里添加元素(1,2)Cell cell = new Cell(2,3);cells.add(cell); //向集合里添加元素(2,3)System.out.println(cell);System.out.println(cells);cell.drop();//cell引用所指对象(2,3)变为(3,3)System.out.println(cell);System.out.println(cells);//集合内的引用未变,是引用所指向的对象内容发生改变}/**测试add方法**/public static void testAdd(){Collection<String> c = new ArrayList<String>();System.out.println(c);//集合为空c.add("a");c.add("b");c.add("c");System.out.println(c);Iterator<String> it = c.iterator();//创建迭代器while (it.hasNext()){//判断是否有下一个元素String str = it.next();//获取集合中的元素System.out.println(str);}}/**用contains方法测试集合类中是否包含某个元素**/public static void testContains(){Collection<Cell> cells = new ArrayList<Cell>();cells.add(new Cell(1,2));cells.add(new Cell(1,3));cells.add(new Cell(2,2));cells.add(new Cell(1,3));Cell cell = new Cell(1,3);//***List集合的contains方法和对象的equals方法相关联***/boolean flag = cells.contains(cell);//***如果Cell类里不重写equals方法将返回false***/System.out.println(flag);}/**测试size 、clear、isEmpty的用法**/public static void testSizeAndClearAndIsEmpty(){Collection<String> c = new HashSet<String>();System.out.println(c.isEmpty());c.add("java");c.add("cpp");c.add("php");c.add("c#");c.add("objective-c");System.out.println("isEmpty:"+c.isEmpty()+",size:"+c.size());c.clear();System.out.println("isEmpty:"+c.isEmpty()+",size:"+c.size());}}
package mycollection;public class Cell {int row;int col;public Cell(int row,int col){this.row = row;this.col = col;}public Cell(){this(0,0); //调用自己一个有参数的构造方法}public Cell(Cell cell){this(cell.row,cell.col);}public void drop(){row++;}public void moveRight(){col++;}public void moveLift(){col--;}@Overridepublic String toString(){return "("+row+","+col+")";}@Overridepublic boolean equals(Object o){if(o==null){ //对象为空return false;}if(this==o){ //对象相同return true;}if(o instanceof Cell){ //判断该对象是否是Cell的实例Cell cell = (Cell)o;return cell.row==row && cell.col==col; //判断对象内容是否相同}else {return false;}}}
0 0
- java自学之旅(4)集合类
- java自学之旅(4)集合类2
- java自学之路-----集合(List Set ) 泛型
- java自学笔记之集合框架
- 黑马程序员java自学总结之--集合
- java自学笔记之集合概述一
- 自学 java 笔记 day13(集合)
- java自学之旅(2.1)关于Date类
- java自学之路-----StringBuffer 基本数据类型(装箱) 集合(迭代器)
- java自学之路4
- java自学笔记12:java中的集合框架(上)
- java自学之旅(1)字符串常用方法
- java自学之旅(2.2)关于SimpleDateFormat
- java自学之旅(3)测试RandomAccessFile常用方法
- Java SE 自学笔记4 之面向对象的类
- JAVA自学之路(尚学堂)3-4
- java自学之旅(2.3)关于Calendar类常用方法
- JAVA自学之路(马士兵)
- Java千百问_08JDK详解(011)_jnlp文件是什么
- 每日一记
- Java学习-50天
- Redis进阶-事务管理、消息通知等
- 在Word中插入Access、SQL数据库数据
- java自学之旅(4)集合类
- 分区存储管理方法
- 每日一记
- NSTimer和Runloop的关系
- Count Numbers with Unique Digits
- 浅谈Struts2和Servlet的不同
- (1) ebj学习:基本概念
- CentOS 双网卡双IP双网关配置
- microstation level2 1202 managing line styles