背景:

       因为对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. JS获取ckeditor4.x里的值

    项目中有这样一个需求,使用ckeditor可以上传图片,需要在前端验证一下不可上传多于5张图片. 以下是查看源代码所看到的ckeditor里的值 <p>AAAAA</p> &l ...

  2. jquery扩展方法

    jquery插件的开发包括两种:一种是类级别的插件开发,即给jquery添加新的全局函数,相当于给jquery类本身添加方法. jquery的全局函数就是属于jquery命名空间的函数,另一种是对象级 ...

  3. JS获取table表格任意单元格值

    jsp页面表格布局 <body onload="show()"> <center> <input type="text" valu ...

  4. ASP.NET MVC4简单使用ELMAH记录系统日志

    ASP.NET MVC4简单使用ELMAH记录系统日志 前言 在项目开发.测试以及已经上线的项目中都会存在bug,而如果我们在项目的各个阶段都能及时的监控系统出现的任何问题,那么对于我们开发人员来说完 ...

  5. html&css入门详解

    本系列主要讲解html与css的知识点,因为是参考的英文版的<html&css design and build websites>,所以可能会有个人翻译理解上的差错,希望观者能够 ...

  6. java转发和重定向

    1,请求重定向:客户端行为,response.sendRedirect(),从本质上讲等同于两次请求,前一次的请求对象不会保持,地址栏的URL地址会改变.2,请求转发:服务器行为,request.ge ...

  7. IOS GCD使用实例大全

    GCD是大家在IOS开发过程中经常使用的一种多线程管理机制.原理这里就不多说了,大家关心的大部分都是它的使用,下面主要介绍GCD的主要方法及其实例. 1.认识主队列,感受串行队列的运行,运行结果打印的 ...

  8. Oracle 视图操作

    -- 创建视图create view V_TEST asselect * from T_TEST where rownum <100 select * from V_TEST-- 新建视图用户 ...

  9. Elasticsearch安装ik中文分词插件(四)

    一.IK简介 IK Analyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包.从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本.最初,它是以开源项目Lu ...

  10. netty(4)高级篇-Websocket协议开发

    一.HTTP协议的弊端 将HTTP协议的主要弊端总结如下: (1) 半双工协议:可以在客户端和服务端2个方向上传输,但是不能同时传输.同一时刻,只能在一个方向上传输. (2) HTTP消息冗长:相比于 ...