tbwshc

Java集合框架中几种集合的分析

        集合可以理解为在内存中存放一组对象的容器,对象是数据的封装,而对象又构成了集合。在java中的集合框架是一种线性的数据结构,但是它分为两种,一种是物理结构,一种是逻辑结构。物理结构是一种连续存储的结构,比如说数组;而逻辑结构可以理解为在内存块中是不连续的,比如说链表,一个链表是分为两中内容的,一个是该链表所存储的数据,还有一个呢,那就是指向下一个链表的指针,通过指针而把表给连起来,称之为链表。数组其实也是可以完成像集合一样的存储的,但是数组存在一定的弊端,数组一旦创建,其大小,类型是固定的,在特定的情况下不能更方便的使用,因此,为了与数组互补,集合也就应运而生了。
  在java.util包中存在三种最重要的集合,其分别是list,set,map,它们各自有各自的特点,这三种都是接口。其中list:1> list的实现类主要有ArrayList,Linkedlist及其Vector,list中存储的数据是有序的,而且也是可以重复的,也就是说list按照添加的顺序,依次的tb存储在list下标从小到大的位置。做一个简单的代码测试
  public class Test {
  public static void main(String[] args) {
  Test test = new Test();
  test.testList();
  public void testList(){//类
  //创建一个List对象
  List list = new ArrayList();
  list.add(1);
  list.add(1);
  list.add(2);
  for(Object a:list){
  System.out.print(a+" ");
  }
  }
  此段代码的运行结果为:{1 1 2}
  反应了其有序可重复的特点。
  2>set同样是一个接口,它常用的实现类有Hashset,Treeset。set集合的存储特点可以说是和list完全相反的,它是一种无序而且不能重复的存储特点。同样的用代码做一个测试 public class Test {
  public static void main(String[] args) {
  Test test = new Test();
  test.testSet();
  public void testSet(){
  //创建Set对象
  Set set = new HashSet();
  set.add(1);
  set.add(2);
  set.add(5);
  set.add(3);
  set.add(4);
  set.add(1);
  set.add(null);
  System.out.println(set);
  Iterator it = set.iterator();
  while(it.hasNext()){//判断有元素可迭代
  int i = it.next();
  System.out.print(i+" ");
  }
  }
  }
  }

  此段代码的运行结果是:{1 2 3 4 5}
  可以说明其无序不可重复的特点。
  3>最后则是map集合,map的实现类常用的有Hashmap,Hashtable和Treemap。
  map与以上两者稍微的有点不同,它是一种映射关系,在map中,存储两种数据,tb表达为map,而以上两者都只有一个数据,而且都是通过下标来访问的,map中k是不可以重复的,而v是可以重复的,进行一段代码测试
  public class Test{
  public static void main(String[] args){
  testmap test=new testmap();
  public void testMap(){
  Map map = new HashMap();
  map.put(1, "aaa");
  map.put(2, "bbb");
  map.put(3,"ccc");
  map.put(2, "ddd");
  System.out.println(map);
  //获取key集合(Set)
  Set set = map.keySet();
  Iterator it = set.iterator();
  while(it.hasNext()){
  int key = it.next();
  //通过key获取对应的value值
  String value = map.get(key);
  System.out.println("key="+key+" value="+value);
  }
  }
  }
  }
  此段代码的运行结果是:key=1 value=aaa;key=2 value=ddd;key=3 value=ccc。
  这三种集合各有其所试用的地方,对于像我这种初学者可以让整个代码简化,思路更清晰。
  二:获得各种数据存储方式长度的方法。
  数组:定义一个数组Array[];那么获得该数组长度的方法是使用其length方法。
  字符串: String st = "aaa";
  st.length();
  这里的length是字符串的一种属性,而数组的length是一种方法。
  List:迭代或者直接通过下标输出,list.size()
  set:迭代while(it.hasNext()){//判断有元素可迭代
  int i = it.next();
  System.out.print(i+" ");
  }
  map:只能用迭代的方法,
  //获取key集合(Set)
  Set set = map.keySet();
  Iterator it = set.iterator();
  while(it.hasNext()){
  int key = it.next();
  //通过key获取对应的value值
  String value = map.get(key);
  System.out.println("key="+key+" value="+value);
  }
  map先是通过迭代器先得到key值,因为是一种一一对应的关系,所以用key值就可以得到value值了。

posted on 2013-07-15 16:52 chen11-1 阅读(241) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: