一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Comparable接口、Set接口、Map接口、list接口及 泛型

时间:2010-12-29 编辑:简简单单 来源:一聚教程网

comparable接口
实现comparable接口的类,对象之间可以比较大小。
comparable接口中只有一个方法
    public int compareto(object obj);
    该方法:返回 0 表示this == obj
            返回正数表示this > obj
            返回负数表示this > obj
实现了comparable接口的类通过compareto方法确定对象的排序方式。
可以通过sort()方法排序。

数据结构的选择:
衡量标准:读的效率和改的效率
    array读快写慢
    linked改快读慢
    hash两者之间

 

map接口
实现了map接口的类用来存储键-值对。
map接口的实现类有hashmap和treemap等。
map类中存储的键-值对通过键来标识,所以键值不能重复。

object put(object key,object value);//如果key已经存在,则返回原key的值value
object get(object key);
object remove(object key);
boolean containskey(object key);
boolean containsvalue(object value);
int size();
boolean isempty();
void putall(map t);
void clear();

用hashcode()方法来比较。

 

泛型:
增强程序的可读性和稳定性
在定义集合时同时定义集合中对象的类型
示例:

import java.util.*;
public class testargswords{
    private static final int one = 1;
    public static void main(string[] args){
        map m =new hashmap(); //泛型
        for(int i = 0;i < args.length;i++){
            int freq = (integer) m.get(args[i]) == null ? 0:(integer) m.get(args[i]);
            m.put(args[i], freq + 1);
        }
        system.out.println(m.size() + " distinct words detected:");
        system.out.println(m);
    }
}

可以在定义collection的时候指定
也可以在循环时使用iterator指定

list接口

list接口是collection的子接口,实现list接口的容器类中的元素是有顺序的,而且可以重复。
list容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
jdk所提供的list容器类有arraylist,linkedlist等。

object get(int index); 

object set(int index, object element); 

void add(int index, object element); 

object remove(int index); 

int indexof(object o); 

int lastindexof(object o);
  

list常用算法:
类java.util.collections提供了list里常用的算法:

void sort(list);  //对list容器内的元素排序 

void shuffle(list); //对list容器内的对象进行随机排序 

void reverse(list); //对list容器内的对象进行逆序排序 

void fill(list, object); //用一个特定的对象重写整个list容器 

void copy(list dest,list src); //将src list容器内容拷贝到dest list容器 

int binarysearch(list,object); //对顺序的list容器,采用折半查找的方法查找特定对象

set接口及其实现子类

set接口是collection的子接口,set接口没有提供额外的方法,但实现set接口的容器类中的元素师没有顺序的,而且不可以重复。

set容器可以与数学中的“集合”的概念相对应。jdk api中提供的set容器类有hashset,treeset等。

例子:

 

import java.util.*;public class testset{    public static void main(string[] args){        set s1 = new hashset();        set s2 = new hashset();        s1.add("a");s1.add("b");s1.add("c");        s2.add("d");s2.add("a");s2.add("b");                set sn = new hashset(s1);        sn.retainall(s2); //求交集        set su = new hashset(s1);        su.addall(s2);   //求并集        system.out.println(sn);        system.out.println(su);    }}

 

热门栏目