您的位置:首页 > 编程语言 > Java开发

Java 集合类(一)

2013-12-01 15:20 423 查看
今天我们先讲一下Collection:

Collection和Collections的区别:

java.util.Collection是一种java集合接口,它提供了对集合对象的基本操作通用接口方法,同时它还有很多具体实现:





注:以上图片只列举常用集合类

java.util.Collections是一个包装类,它包含许多有关集合操作的静态多态方法,此类不能实例化,它就像个工具类,服务与java的Collection。有关Collections的具体方法可参考JDK说明文档(部分也可见),下面我举出几个方法示例:

import java.util.Collection;
import java.util.Collections;
import java.util.ArrayList;
import java.util.List;

public class test {
private double[] a = {123,33,423,655,4553};
List<Double> l = new ArrayList();
List<Double> l2 = new ArrayList();

public static void main(String[] args) {
new test().sort();
}

public void sort(){
for(int i = 0; i<a.length;i++ ){
l.add(a[i]);
}
Collections.sort(l);
for(int i = 0 ;i<a.length;i++){
System.out.println(l.get(i));
}
}

}


  运行结果如下:



可在上面代码的基础上添加同类方法,如:

把上面sort()中的Collections.sort(l);--->Collections.shuffle(l); //随机排序

--->Collections.reverse(l); //反转排序

--->Collections.min(l); //返回最小元素(max,最大)

--->Collections.fill(l,"334"); //用334替换所有元素

......

2.常见java容器的比较:

接口

特性

实现类

实现类特性

成员要求

List

线性、有序的存储容器,可通过索引访问元素

ArrayList

数组实现。非同步。

Vector

类似ArrayList,同步。

LinkedList

双向链表。非同步。

Map

保存键值对成员

HashMap

基于哈希表的 Map 接口的实现,满足通用需求

任意Object对象,如果修改了equals方法,需同时修改hashCode方法

TreeMap

默认根据自然顺序进行排序,

或者根据创建映射时提供的 Comparator进行排序

键成员要求实现Comparable接口,或者使用Comparator构造TreeMap。键成员一般为同一类型。

LinkedHashMap

类似于HashMap,但迭代遍历时取得“键值对”的顺序是其插入顺序或者最近最少使用的次序

与HashMap相同

IdentityHashMap

使用==取代equals()对“键值”进行比较的散列映射

成员通过==判断是否相等

WeakHashMap

弱键映射,允许释放映射所指向的对象

ConcurrentHashMap

线性安全的Map

Set

成员不能重复

HashSet

为快速查找设计的Set

元素必须定义hashCode()

TreeSet

保持次序的Set,底层为树结构

元素必须实现Comparable接口

LinkedHashSet

内部使用链表维护元素的顺序(插入的次序)

元素必须定义hashCode()

注:在满足要求的情况下,Map应尽量使用HashMap,Set应尽量使用HashSet

3.Collection的学习:

实例1:

import java.util.*;

public class SimpleCollection{

public static void main(String[] args){
Collection<Integer> c = new ArrayList<Integer>();
for(int i = 0;i < 10; i++)
c.add(i);  //Autoboxing
for(Integer i: c)
System.out.println(i +", ");
}
}

/*
0,1,2,3,4,5,6,7,8,9,
*/


  实例2:

/*
如何向Collection添加一组元素
*/
//以下是方法体
Collection<Integer> collection = new ArrayList<Integer>
(Arrays.asList(1,2,3,4,5)); //Array像Collections一样是工具类
Integer[] moreInt = {6,7,8,9,10};
Collection.addAll(Arrays.asList(moreInt));

Collections.addAll( collection,11,12,13,14);  //Collection对象作参数
Collections.addAll( collection, moreInt);

List<Integer> list = Arrays.asList(16,17,18);
list.set(1,99);
//list.add(21)  //错误,asList产生的List的长度不可变,只能修改元素值


下一节学习List部分!!

### 学习从来都是一个过程,对对错错对对...若文中有错误,还望读者批评指出 ###
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: