背景:

       因为对Java的集合完全不了解,所以才在网上找了找能形成初步印象的文章进行学习,大多涉及的是一些概念和基础知识。

一、数组array和集合的区别:

(1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)

(2)JAVA集合可以存储和操作数目不固定的一组数据。
(3)若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。联系:使用相应的toArray()和Arrays.asList()方法可以互相转换。

二、集合的体系结构:

(1)List、Set、Map是这个集合体系中最主要的三个接口。 List和Set继承自Collection接口。 Map也属于集合系统,但和Collection接口不同。
(2)List有序且允许元素重复。ArrayList、LinkedList和Vector是三个主要的实现类。 ArrayList 是线程不安全的, Vector 是线程安全的,这两个类底层都是由数组实现的 LinkedList 是线程不安全的,底层是由链表实现的。
(3)Set不允许元素重复。HashSet和TreeSet是两个主要的实现类。Set 只能通过游标来取值,并且值是不能重复的。
(4)Map 是键值对集合。其中key列就是一个集合,key不能重复,但是value可以重复。 HashMap、TreeMap和Hashtable是Map的三个主要的实现类。 HashTable 是线程安全的,不能存储 null 值 HashMap 不是线程安全的,可以存储 null 值。

三、各个接口实现类的插入和遍历数据的方法

(1)List接口之ArrayList实现类
  

package com.test.List;

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

public class ListTest {

    public static void main(String[] args) {
        List list=new ArrayList<>();
        list.add(0, "a");
        list.add(1, "b");
        list.add(2, "c");
        list.add(3, "d");

//        Iterator iterator =list.iterator();
//        while (iterator.hasNext()) {
//            System.out.println(iterator.next());
//        }

        for (Object object : list) {
            System.out.println(object);
        }
    }

}
(2)Set接口之HashSet实现类
  

package com.test.List;

import java.util.HashSet;

public class SetTest {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根

        HashSet<String> hSet=new HashSet<>();
        hSet.add("你好");
        hSet.add("我在学集合");
        hSet.add("哦,学的怎么样了");
        hSet.add("听难的");
        hSet.add("没事,加油");
        hSet.add("恩,好的,谢谢");

        for (String string : hSet) {
            System.out.println(string);
        }
    }

}
 
(3)Map接口之TreeMap实现类
  

package com.test.List;

import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

public class User {

    private int id;
    private String name;
    private String address;

    public User(int id,String name,String address) {
        this.id=id;
        this.name=name;
        this.address=address;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public static void main(String[] args) {
        TreeMap<Integer, User> map=new TreeMap<Integer,User>();
        map.put(1, new User(1,"小红","北京"));
        map.put(2, new User(2,"小蓝","广州"));
        map.put(3, new User(4,"小东","深圳"));
        map.put(4, new User(5,"小白","上海"));
        //返回此映射所包含的键的视图
        Set<Integer> keySet=map.keySet();
        /*Iterator<Integer> i=keySet.iterator();
        while (i.hasNext()) {
            System.out.println(map.get(i.next()));
        }*/
        //foreach是迭代器的简便写法
        for (Integer integer : keySet) {
            User user=map.get(integer);
            System.out.println(user.getId()+";"+user.getName()+";"+user.getAddress());
        }
    }
}

总结:

 
    (1)因为数组长度是固定的,且只能存储单一类型的数据,而集合突破了这两种限制,可以说集合是数组的一种拓展;
    (2)Java的集合接口分为3大类,List、Set及Map,List是有序可重复性的,Set是无序不可重复的,Map存储的是一组键值对;
    (3)感觉学一个新的知识点,就应该先了解它最重要的功能,然后从最重要的功能开始学起。集合最重要的就是充当容器,也就是存储的功能,所以关于往集合里加入数据和遍历数据的方法是最开始要了解的。
    (4)List和Set加入数据都是用add()方法,Map加入数据用的是put();
    (5)遍历:三者都可以用迭代器,即iterator,或者用foreach循环。

Java集合初体验的更多相关文章

  1. JAVA 11初体验

    JAVA 11初体验 随着JAVA没半年发布一次新版本,前几天JAVA 11隆重登场.在JAVA 11中,增加了一些新的特性和api, 同时也删除了一些特性和api,还有一些性能和垃圾回收的改进. 作 ...

  2. JAVA多线程-初体验

    一.线程和进程 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程. 进程是所有线程的集合,每一个线程是进程中的一条执行路径. 二.为什么使用多线程,哪些场景下使用 多线程的好处是提高程序 ...

  3. Java爬虫初体验

    年关将近,工作上该完成的都差不多了,上午闲着就接触学习了一下爬虫,抽空还把正则表达式复习了,Java的Regex和JS上还是有区别的,JS上的"\w"Java得写成"\\ ...

  4. java学习初体验之课后习题

    import java.util.Scanner; public class HelloWorld { public static void main(String[] args) { //打印Hel ...

  5. Java单元测试初体验(JUnit4)

    什么是单元测试 我们在编写大型程序的时候,需要写成千上万个方法或函数,这些函数的功能可能很强大,但我们在程序中只用到该函数的一小部分功能,并且经过调试可以确定,这一小部分功能是正确的.但是,我们同时应 ...

  6. java activemq初体验

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...

  7. java学习初体验NO.1

    一.学习目标: 1.理解Java编译原理 在Java编程语言中,所以源代码首先以用.Java扩展名结尾的纯文本件编写,然后,编译器将这些源文件编译成.Class文件.然后,Java启动器工具使用Jav ...

  8. java程序初体验

    示例代码 class Demo { public static void main(String[] args) { System.out.print("hello world") ...

  9. JAVA的初体验

    jdk的地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 第一步:找到相应的JAVA SE版本,点击down ...

随机推荐

  1. 异步执行Dos命令

    //Minute const ; /// <summary> /// 执行命令行 /// </summary> /// <param name="cmdLine ...

  2. MEF只导出类的成员

    MEF只导出类的成员 通过前面两篇文章的介绍,相信各位会明白MEF中有不少实用价值.上一文中我们也讨论了导入与导出,对于导出导入,今天我们再深入一点点,嗯,只是深入一点点而已,不会很难的,请大家务必放 ...

  3. windows下python web开发环境的搭建

    windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.pyth ...

  4. myeclipse 配置 resin-pro-4.0.34

    热部署: 在 resin.xml 文件下 增加 <host id="" root-directory="."> <!-- webapps ca ...

  5. TFS的安装

    TFS的安装 本系列的实例将采用TFS 2012+Sql Server2012编写. TFS的完整版本安装最好是在Windows server2008 64位以上版本中,其包括64位的SQL SERV ...

  6. C# .Net 使用zxing.dll生成二维码,条形码

    public static string GetBarcode(string format, string value, int? width, int? height)        {       ...

  7. 详解android的号码匹配

    什么是号码匹配,个人理解,即判断两组号码是否属于同一个号码.在实际使用过程中,接触到的号码会涉及到区号,国家编码以及IP号码等,这个时候就用到了号码匹配.两个内容不一样的号码,如+86***和1795 ...

  8. oracle保证读一致性原理

    35 这里也有讲解 1:undo segment的概念 当数据库进行修改的时候,需要把保存到以前的old的数据保存到一个地方,然后进行修改,用于保存old数据的segment 就是undo segme ...

  9. 开发一个微信小程序项目教程

    一.注册小程序账号 1.进入微信公众平台(https://mp.weixin.qq.com/),注册小程序账号,根据提示填写对应的信息即可.2.注册成功后进入首页,在 小程序发布流程->小程序开 ...

  10. spring mvc后台接收中文乱码

    可从如下几方面着手 1.jsp页面编码 2.web.xml配置字符过滤器,该字符过滤器最好放在开头 3.tomcat下server.xml添加URIEncoding="UTF-8" ...