Java 容器学习

来源:互联网 发布:周杰伦婚礼音乐 知乎 编辑:程序博客网 时间:2024/06/05 10:23

#容器类

类似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中有尖括号即支持泛型。 可以理解为为各种类型都重载了一次。 大概使用方法如下

即在类型后加上一对尖括号,并写入类型名。


0 0