Java 容器学习
2015-11-29 22:52
597 查看
#容器类
类似C++的STL。
Set : 集合,没有顺序,并且不可以重复。
List : 有顺序,可重复。
Map : 一对键值映射。
如图四个接口,实现接口的有arrayList,LinkedList类等。
HashSet LinkedList 等都是实现Collection接口的容器,数组也是一种容器。
Collection c=new ArrayList( ) ; // 超类引用子类
c.add("hello"); // 只能添加object,分配在堆上的变量。不能添加基础类型。
c.add( new Integer(100) ); // object 对象
c.remove("hello"); // 成功返回true
// 容器内对象对比时需重写equals或hashcode函数
// equals 来对比普通类,hashcode 对比键值对中的键 以提高对比效率。
/**********************
Iterator 接口
实现某个容器的迭代器,来遍历容器里的元素。
Collection c = new HashSert( );
Iterator i=c.iterator( );
for(; i.hasNext( ) ; ){
Name name =(Name) i.next( );
i.remove( );
// 此时不能用 c.remove( );
// 迭代器锁定了目标元素。其他代码不能访问
}
/***********
int[ ] arr= new int [500];
for( int i : arr)
{
遍历数组元素;
}
还可以遍历容器,如下图
/****************
Collections 类提供很多静态方法,来对List进行运算。
这里排序的算法需要元素类实现compareTo 接口,来确定该类对象的排序方式。
/*****************
此处K,V为泛型,API中有尖括号即支持泛型。 可以理解为为各种类型都重载了一次。 大概使用方法如下
即在类型后加上一对尖括号,并写入类型名。
类似C++的STL。
Set : 集合,没有顺序,并且不可以重复。
List : 有顺序,可重复。
Map : 一对键值映射。
如图四个接口,实现接口的有arrayList,LinkedList类等。
HashSet LinkedList 等都是实现Collection接口的容器,数组也是一种容器。
Collection c=new ArrayList( ) ; // 超类引用子类
c.add("hello"); // 只能添加object,分配在堆上的变量。不能添加基础类型。
c.add( new Integer(100) ); // object 对象
c.remove("hello"); // 成功返回true
// 容器内对象对比时需重写equals或hashcode函数
// equals 来对比普通类,hashcode 对比键值对中的键 以提高对比效率。
/**********************
Iterator 接口
实现某个容器的迭代器,来遍历容器里的元素。
Collection c = new HashSert( );
Iterator i=c.iterator( );
for(; i.hasNext( ) ; ){
Name name =(Name) i.next( );
i.remove( );
// 此时不能用 c.remove( );
// 迭代器锁定了目标元素。其他代码不能访问
}
/***********
int[ ] arr= new int [500];
for( int i : arr)
{
遍历数组元素;
}
还可以遍历容器,如下图
/****************
Collections 类提供很多静态方法,来对List进行运算。
这里排序的算法需要元素类实现compareTo 接口,来确定该类对象的排序方式。
/*****************
此处K,V为泛型,API中有尖括号即支持泛型。 可以理解为为各种类型都重载了一次。 大概使用方法如下
即在类型后加上一对尖括号,并写入类型名。
相关文章推荐
- java基础之序列化
- 从头认识java-10.7 使用异常的限制汇总
- Java中一些常用的正则表达式
- eclipse下如何关联android-support-v4.jar源码
- 第二个spring冲刺第6天
- Spring事务配置的五种方式
- 在Spring3中,配置DataSource的方法有6种。
- C#和JAVA实现图片和BASE64互转
- 多个Jdk版本(转)
- java 中的异常
- spring 使用classpath方式加载hibernate映射文件
- SpringMVC中的HandlerAdapter
- spring MVC中的异常统一处理
- ajax ssh 整合
- java继承深入解析
- For Java初学者like me而言need to掌握的高级一点的方法
- HashMap(JDK1.8)源码剖析
- [JavaWeb]Maven安装配置
- 读取Java文件到byte数组的三种方式
- 我看Java虚拟机(6)---虚拟机字节码执行