首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java聚合框架小结

2012-11-04 
java集合框架小结java集合框架主要有Set ,List,Map 这三个接口,它们都在java.util.*这个包下。 1.首先说说C

java集合框架小结
                             java集合框架
主要有Set ,List,Map 这三个接口,它们都在java.util.*这个包下。

1.首先说说Collection,因为Set和List都是继承了Collection接口的子接口。
  百度了一下,是这么说的:
  java中定义了很多集合类(也叫聚集或者容器),Collection是所有集合类的父接口.Collection接口定义了15方法,没有任何常量定义,这里简要说明这些方法
  1.size()
  获得集合中元素的个数,如果个数大于Integer.MAX_VALUE,返回Integer.MAX_VALUE.
  2.isEmpty()
  如果不含任何元素,返回true
  3.contains(Object o)
  如果包含指定元素,返回true
  4.iterator()
  返回迭代器
  5.toArray()
  返回数组Object[]
  6.toArray(Object[] a)
  返回数组Object[],如果a可以包含集合中的元素,返回a,否则生成一个新的数组.
  7.add(Object o)
  添加一个元素,成功返回true
  8.remove(Object o)
  删除一个数据,成功返回true
  9.addAll(Collection c)
  添加包含在集合c中的所有元素,如果集合有改变,返回true
  10.removeAll(Collection c)
  删除包含在集合c里的所有元素,如果集合有改变,返回true
  11.retainAll(Collection c)
  删除不包含在集合c里的所有元素,如果集合有改变,返回true
  12.containsAll(Collection c)
  如果包含集合c里的所有元素,返回true
  13.clear()
  清除集合,调用后isEmpty应该为true
  14.equals(Object c)
  判断是否相等
  15.hashCode()
  返回哈希值

在Java类库中,没有直接继承Collection的类,都是继承Collection的子接口,比如List,Set,Map等,而且都不相交,
  也就是不可以既是List又是Set.

2.Set接口
  1.无序的,像往口袋里放东西,因此不能根据索引获得,如果要获取数据必须使用迭代器(iterator)。如:
    Iterator<Student> iter = set.iterator();
//遍历
while(iter.hasNext()){
Student stu = iter.next();
//调用toString方法
System.out.println(stu.toString());
}

  2.不能有重复的数据
    但是如果是下面的情况:
    //循环添加数据
for(int i=0;i<10;i++){
Student stu = new Student("学生" + (char) (i + 65), i);
set.add(stu);
}
Student stu = new Student("学生" + (char)  65, 0);
set.add(stu);

Student stu1 = new Student("学生" + (char)  65, 5);
set.add(stu1);

Student stu2 = new Student("学生" + (char)  66, 1);
set.add(stu2);
一开始老师问我们结果会是多少个数据时,我们都以为是11个,但结果出来是13个!仔细一想,原来我们都被迷惑了,
原因是,每new一个对象,它对应的地址都是不一样的,因此不是重复的!所以会得到13个数据。

3.List接口
  1.有序的,既可以直接通过索引来获得数据

  2.操作方式与自定义队列类似

  3.是使用数组来实现的

4.Map<K,V>

  1.类似映射,是一一对应的关系,好比学生对应一个学号

  2.键值对方式存储数据。

  3.只要键不同,那么值是可以相同的。(键不能重复,但值可以重复)

  4.将有关联关系的对象放入map中用的是put(K key,V value)方法。

  5.常实现的子类接口有java.util.HashMap;java.util.HashTable

5.自定义队列
  自定义队列时线性的数据结构。基本思想很简单,就是先创一个零长度的数组,当要添加一个元素的时候就再创一个长度比原数组长度长一的数组,把要添加的元素加到这个新的数组的最末端,再把这个新的数组名赋值给原数组名,如此循环下去,就可以使得元素不断的加进去了
如:

public class ListDiy {private int[] old = new int[0];public void add(int n){int[] newone = new int[old.length+1];newone[old.length]=n;for(int i=0;i<old.length;i++){newone[i]=old[i];}old=newone;} 

热点排行