java集合框架中几种集合的分析_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java集合框架中几种集合的分析

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

 2013/7/14 0:15:15  在下个路口  程序员俱乐部  我要评论(0)
  • 摘要:集合可以理解为在内存中存放一组对象的容器,对象是数据的封装,而对象又构成了集合。在java中的集合框架是一种线性的数据结构,但是它分为两种,一种是物理结构,一种是逻辑结构。物理结构是一种连续存储的结构,比如说数组;而逻辑结构可以理解为在内存块中是不连续的,比如说链表,一个链表是分为两中内容的,一个是该链表所存储的数据,还有一个呢,那就是指向下一个链表的指针,通过指针而把表给连起来,称之为链表。数组其实也是可以完成像集合一样的存储的,但是数组存在一定的弊端,数组一旦创建,其大小,类型是固定的
  • 标签:Java 分析
      集合可以理解为在内存中存放一组对象的容器,对象是数据的封装,而对象又构成了集合。在java中的集合框架是一种线性的数据结构,但是它分为两种,一种是物理结构,一种是逻辑结构。物理结构是一种连续存储的结构,比如说数组;而逻辑结构可以理解为在内存块中是不连续的,比如说链表,一个链表是分为两中内容的,一个是该链表所存储的数据,还有一个呢,那就是指向下一个链表的指针,通过指针而把表给连起来,称之为链表。数组其实也是可以完成像集合一样的存储的,但是数组存在一定的弊端,数组一旦创建,其大小,类型是固定的,在特定的情况下不能更方便的使用,因此,为了与数组互补,集合也就应运而生了。
       在java.util包中存在三种最重要的集合,其分别是list,set,map,它们各自有各自的特点,这三种都是接口。其中list:1> list的实现类主要有ArrayList,Linkedlist及其Vector,list中存储的数据是有序的,而且也是可以重复的,也就是说list按照添加的顺序,依次的存储在list下标从小到大的位置。做一个简单的代码测试
  public class Test {
public static void main(String[] args) {
Test test = new Test();
                      test.testList();
                    public void testList(){//类
//创建一个List对象
List<Integer> list = new ArrayList<Integer>();
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<Integer> set = new HashSet<Integer>();
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<Integer> 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中,存储两种数据,表达为map<k,v>,而以上两者都只有一个数据,而且都是通过下标来访问的,map中k是不可以重复的,而v是可以重复的,进行一段代码测试
    public class Test{
    public static void main(String[] args){
         testmap test=new testmap();
          public void testMap(){

Map<Integer, String> map = new    HashMap<Integer,String>();
map.put(1, "aaa");
map.put(2, "bbb");
map.put(3,"ccc");
map.put(2, "ddd");

System.out.println(map);
//获取key集合(Set)
Set<Integer> set = map.keySet();
Iterator<Integer> 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<Integer> set = map.keySet();
Iterator<Integer> 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值了。
上一篇: 基于Java的四大开源测试工具 下一篇: 没有下一篇了!
发表评论
用户名: 匿名