JAVA中的集合框架


概念

集合框架:是为表示和操作集合而规定的一种统一的、标准的体系结构。

任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。

接口:即表示集合的抽象数据类型。接口提供了让我们对集合中所表示的内容进行单独操作的可能。

实现:也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。

算法:在一个实现了某个集合框架中的接口的对象上,完成某种有用的计算的方法,例如查找、排序等。

集合框架内容

          接口主要是Collection,Map,List,Set

  具体类:ArrayList, LinkedList, HashSet, TreeSet, HashMap

          算法:Collections



特点

Collection:存储一组不唯一,无序的对象, 唯一就是指的是不允许重复

List:存储一组不唯一,有序的对象, 不唯一指的是可以有重复的value,但是可能放在不同的位置

Set:存储一组唯一,无序的对象

Map:存储一组键值对对象,提供Key和value的映射

注意,他们的操作都是对象哦,int这种不同类型可不行,还有一个就是集合具有唯一性


List接口实现

    这里介绍下ArrayList,它实现了一个可边长的数组,在内存中分配连续的内存,遍历元素和随机访问元素比较高

存储方式如下图所示,有固定的内存位置,每个位置存放一个Object,内容可以重复!


相关操作方法



写一个简单的例子来看下如何使用ArryList:

import java.util.List;
import java.util.ArrayList;

import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;


public class Test{

    public static void main(String args []){

	ArrayList<String> arrylist = new ArrayList<String>();

	arrylist.add("abc");
	arrylist.add("efg");
	arrylist.add("hjk");
      
       int len = arrylist.size();
	System.out.println("arrylist len = " + len);

	for(int i = 0; i < arrylist.size(); i++){

			System.out.println(arrylist.get(i));
	}

	}
}
在Code中声明了一个ArrayList用于存放String,然后使用add方法,加入了3个String,然后通过size方法获取arraylist中的存储的String个数,然后每个都打印出来,结果如下:

arrylist len = 3
abc
efg
hjk

如何遍历ArrayList,从上面的代码中看,我们使用了一个for循环,使用get方法来获取ArrayList中的每一个元素,这是一种最简单的方法,还有一种方法Iterate迭代器,先看下如何使用迭代器来遍历ArrayList

import java.util.List;
import java.util.ArrayList;

import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;


public class Test{

    public static void main(String args []){

	ArrayList<String> arrylist = new ArrayList<String>();

	arrylist.add("abc");
	arrylist.add("efg");
	arrylist.add("hjk");
      
       int len = arrylist.size();
	System.out.println("arrylist len = " + len);

       Iterator<String> it = arrylist.iterator();

	while(it.hasNext()){

		System.out.println(it.next());
	}

	}
}

迭代器主要有2个方法,hasNext()和next(), 第一个是判断是否有下一个变量,如果有通过next方法取出来,运行的程序结果也是一样!


Set接口

    Set类似于数学中的集合,数据不能重复,具有唯一性,直接看下代码,如何使用Set 和HashSet

import java.util.List;
import java.util.ArrayList;

import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;


public class Test{

    public static void main(String args []){

 HashSet<String> hashset = new HashSet<String>();
    Set<String> set = hashset;

	set.add("abc");
	set.add("efd");
	set.add("gfs");
	set.add("xyz");
       set.add("efd");
	int len = set.size();

	System.out.println(len);

	//set.clear();

	set.remove("efd");
	int j = set.size();

	System.out.println(j);

	Iterator<String> it = set.iterator();

	while(it.hasNext()){

		    String s = it.next();

		  System.out.println(s);
	}

	}
}

通过add方法增加对象,通过remove方法来移除对象,还有clear方法清空对象。这个必须使用迭代器来读取相关的对象。!

程序结果

4
3
abc
gfs
xyz



Map接口

这个接口就是一个映射的键值对,有一个Key还有Value,可以通过Key来查找到Value,所以Key是唯一的,Value可以有相同的方法,其中最常用的实现类是HashMap,Map常用的接口如下



import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;


public class Test{

    public static void main(String args []){

    HashMap<Integer,String> hashmap = new HashMap<Integer,String>();

	Map<Integer,String> map = hashmap;

	map.put(0,"abc");
	map.put(1,"def");
	map.put(2,"efd");
	map.put(3,"gdc");

	int len = map.size();
	System.out.println(len);

      System.out.println(map.get(3));
	}
}

从代码看到使用put方法把键和键值存放到MAP中,可以通过size方法获取里面键值对的数量,然后通过get方法,可以根据键将此键保存的内容取出来。

程序结果

4
gdc









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值