`
在下个路口
  • 浏览: 109640 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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值了。
分享到:
评论
4 楼 在下个路口 2013-08-26  

好的,非常感谢!
3 楼 kjmmlzq19851226 2013-08-26  
在下个路口 写道
对对对,我写反了,从字符串的.length(),带了()就知道了它是一种方法了。

只能算手误 说得还是比较清楚了,如果再加上对Collection的分析可能更佳。
2 楼 在下个路口 2013-08-24  
对对对,我写反了,从字符串的.length(),带了()就知道了它是一种方法了。
1 楼 kjmmlzq19851226 2013-08-06  
字符串的length是method,数组的length是property吧

相关推荐

    Java集合框架Map接口.pdf

    Java集合框架中的Map接口表示一种键值对(key-value)的数据结构,其中每个元素都包含一个唯一的键和对应的值。在Map中,每个键必须是唯一的,而值可以重复。Map接口提供了一些方法来实现基本的键值对操作,例如添加...

    java集合类

    集合(或容器)表示保存一个对象组的单个对象,其它对象被认为是它的元素。...Java集合框架定义了几个接口。这些集合接口决定了集合实现类的基本特性。对于不同的集合实现类提供了这些标准接口的不同实现。

    高级编程-java实验报告.docx

    实验目的及要求 ...1)Java集合框架中几种具体实现的使用:ArrayList, LinkedList, HashSet, TreeSet, PriorityQueue; 2)HashMap和TreeMap的使用; 3)枚举类型的使用,EnumSet和EnumMap的使用;

    java小白到高级之java三大集合的使用

    java小白到高级之java三大集合的使用java小白到高级之java三大集合的使用java小白到高级之java三大集合的使用;Java集合框架的基本接口主要包括以下几种:

    jcollections:JavaScript中的强大集合框架

    在API方面,它汲取了Java集合中优秀的设计思想,同时也增添了一些新的特性,最大程度上方便开发人员的使用。 该框架由两部分组成: jcollections.js:集合类,提供了几种常用的集合类,这个库文件可直接引入到页面,...

    java面试要点集合

    2、ejb几种类型 3、String和StringBuffer区别 4、jsp有哪些动作标记 5、动态Include和静态Include的区别 6、Exception中Finally的用法 7、jsp的内置对象有哪些 北京环贸通科技有限公司 1、jsp两种跳转方式 2、...

    Java后端+Java后端中级面试题

    解释什么是Java的集合框架,并提供一些常用的集合类和它们的用法。 请解释Java中的反射机制,以及它的用途和局限性。 什么是Java的序列化和反序列化?为什么它们在分布式系统中很重要? 解释什么是Java的设计模式,...

    Java大数据开发+Java大厂面试题

    解释什么是Java的集合框架,并提供一些常用的集合类和它们的用法。 请解释Java中的反射机制,以及它的用途和局限性。 什么是Java的序列化和反序列化?为什么它们在分布式系统中很重要? 解释什么是Java的设计模式,...

    Java面试题+Java后端中级面试题

    解释什么是Java的集合框架,并提供一些常用的集合类和它们的用法。 请解释Java中的反射机制,以及它的用途和局限性。 什么是Java的序列化和反序列化?为什么它们在分布式系统中很重要? 解释什么是Java的设计模式,...

    java面试常见问题.docx

    Java中的访问修饰符有哪几种?它们的区别是什么? 请解释Java中的抽象类和接口的概念及区别是什么? 请解释Java中的泛型(Generic)是什么?它有什么作用? Java中的异常处理机制是什么?如何处理异常? 请解释Java...

    Java遍历集合方法分析(实现原理、算法性能、适用场合)

    Java语言中,提供了一套数据集合框架,其中定义了一些诸如List、Set等抽象数据类型,每个抽象数据类型的各个具体实现,底层又采用了不同的实现方式,比如ArrayList和LinkedList。 除此之外,Java对于数据集合的遍历...

    java开源包11

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包4

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    Java面试常见问题

    1.Java集合框架是什么?说出一些集合框架的优点?  每种编程语言中都有集合,初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的...

    Java 基础核心总结 +经典算法大全.rar

    关于 null 的几种处理方式大小写敏感 null 是任何引用类型的初始值 null 只是-种特殊的值使用 Null-Safe 方法null 判断 关于思维导图 Java.IO Java.lang Java.math Java.net Java 基础核心总结 V2.0 IO 传统的 ...

    Java工具包提供了强大的数据结构

    在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表(Hashtable) 属性(Properties) 以上这些类是传统遗留的,在Java2...

    Java语言基础下载

    线程中断/恢复的几种方式 178 创建线程的两种方式 179 线程的控制 180 实例分析 182 内容总结 189 独立实践 190 第十二章:高级I/O流 192 学习目标 192 I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 ...

    Java常见面试题208道.docx

    15.java 中 IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和 Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21....

    JAVA面试题最全集

    76.EJB有哪几种?区别是什么? 77.JavaBean与EJB有什么区别? 78.软件开发生命周期有哪几个阶段? 79.软件开发有哪些因素? 80.软件开发中如何进行版本控制? 81.UML中,类视图如何表示类中的继承与聚合? 82.客户端...

    java面试宝典

    94、元素有一个cascade属性,如果希望Hibernate级联保存集合中的对象,casecade属性应该取什么值?(单选)(D) 22 95、以下哪些属于Session的方法?(A,B,C,D,F) 22 96、Hibernate工作原理及为什么要用? 22 97、...

Global site tag (gtag.js) - Google Analytics