集合类

框架图镇博

一个集合对象或一个容器表示一组对象,集合中的对象称为元素。

上述所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,主要包含hashNext(),next(),remove()三种方法。它的一个子接口LinkedIterator在它的基础上又添加了三种方法,分别是add(),previous(),hasPrevious()。也就是说如果是先Iterator接口,那么在遍历集合中元素的时候,只能往后遍历,被遍历后的元素不会在遍历到,通常无序集合实现的都是这个接口,比如HashSet,HashMap;而那些元素有序的集合,实现的一般都是LinkedIterator接口,实现这个接口的集合可以双向遍历,既可以通过next()访问下一个元素,又可以通过previous()访问前一个元素,比如ArrayList。

怎么理解呢,我的理解就是集合类就相当于动态数组。无非java将几种常用的数据结构分为几种不同的集合类,再配合泛型进行使用,规范了数组的输入和使用。

我们来细分一下结构图

Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
我们先来讲讲相对简易的List.
List 接口继承了 Collection 接口以定义一个允许重复项的有序集合

//存取函数
void add(int index, Object element) 
boolean addAll(int index, Collection collection) 
Object get(int index) 
Object remove(int index) 
Object set(int index, Object element) 

//查找函数
int indexOf(Object element) 
int lastIndexOf(Object element) 

//遍历
ListIterator listIterator() 
ListIterator listIterator(int startIndex) 

//截取子列
List subList(int fromIndex, int toIndex)

实例代码:

  public static void main(String args[])
       {
           List<String> list1=new ArrayList<String>();     
           list1.add("周二");
           list1.add(1,"张三");
           list1.add("李四"); 
           Iterator<String>Itr=list1.iterator();
           while(Itr.hasNext())
            System.out.println(Itr.next().toString());
           System.out.println("-----------------");
           list1.set(0, "王五");
           Itr=list1.iterator();
           while(Itr.hasNext())
            System.out.println(Itr.next().toString());
           list1.remove(1);
           System.out.println("-----------------");
           Itr=list1.iterator();
           while(Itr.hasNext())
            System.out.println(Itr.next().toString());
           list1.addAll(list1);
           System.out.println("-----------------");
           Itr=list1.iterator();
           while(Itr.hasNext())
            System.out.println(Itr.next().toString());
           list1.removeAll(list1);

       }

运行结果:

Set

public interface Set<E>extends Collection<E>
{
    int size();
    boolean contains(E);
    boolean add(E);
    boolean remove(E);
    Iterator<E> iterator();

    //批处理操作
    boolean containAll(Collection<?> c);
    boolean addAll(Collection<?> c);
    boolean removeAll(Collection<?>c);
    //使当前集合只保留c的元素
    boolean retainAll(Collection<?>c);


     void clear();

}

具体使用方法和List没有太大的差别,值得注意的是:
Set接口有三个使用的类,即:

 //HashSet是无序的存储。访问效率快
 Set<String> s =new HashSet<String>();
 //TreeSet中实现了SortedSet,可进行升序排列
 Set<String> s=new TreeSet<String>();
 //LinkHashSet具有固定的顺序
 Set<String> s=new LinkedHashSet<String>();

//其实所有的集合类都可以用Collection中的排序方法进行排序 后来会细讲

至于Queen用的不是很多,就不多说了。

再来看看比较常用的Map

常用操作:

//返回值是被替换的值。
Object put(Object key, Object value);
Object remove(Object key);
void putAll(Map mapping);
void clear();

Object get(Object key);
boolean containsKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();


//下面的方法允许您把键或值的组作为集合来处理
public Set keySet();
public Collection values();
public Set entrySet();

引用方法

//有序树,存在SortedMap结口
Map<String,String>m= new TreeMap<String,String>();
//无序树,并允许有空的键值
Map<String,String>m= new HashMap<String,String>();
//同步的HashTable
Map<String,String>m= new Hashtable<String,String>();

这里面最大的问题就是:
HashMap和Map的区别。ArrayList和List的区别
答:Map,List都只是接口,一个没有被实现的抽象类,Java 集合框架中一部分,用于存储键值对,HashMap,ArrayList是用哈希算法实现Map,List的实用类。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值