背景:

       因为对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. Power BI移动端应用

    随笔- 420  文章- 6  评论- 1927  无处不在的商业智能---Power BI移动端应用   此篇来自于微软商业智能网站的官方博客团队发布的Power BI在线资料其中的一部分,完整版地 ...

  2. 利用connect建立前端开发服务器

    利用connect建立前端开发服务器 对于前后端完全分离的系统,开发时候我们需要给前端配置服务器,当然我们可以选择Nginx之类的服务器进行配置,但我们也能使用NodeJS构建高自由度的前端开发服务器 ...

  3. zTree应用实例详讲

    zTree应用实例详讲(1) 因为项目的需要,要创建一棵动态的文件树,此树除了实现异步获取子节点外,还要实现对树节点的增.删.改.查.移动.重命名.批量删除.批量移动. 每一个操作都要和数据库打交道. ...

  4. MFC中菜单变灰的问题

    MFC中菜单变灰 方法1:有UpdateCmdUI句柄时 定义一个BOOL变量m_b来标志菜单项是否有效, 该菜单项响应UPDATE_COMMAND_UI消息,在消息处理函数中pCmdUI->E ...

  5. new和instanceof的内部机制

    new和instanceof的内部机制 首先我们来看看obj = new o()这条语句发生了什么: var obj = (function(){ var obj = {}; obj.__proto_ ...

  6. RSA算法优化

    RSA算法优化 大数乘法 模乗优化 剩余定理(孙子定理) RSA加解密 python的RSA计算优化 #-*- coding: utf-8 -*- ''' /********************* ...

  7. STL---基本算法---<stl_algobase.h>概述

    通过一个实例来说明这些算法的接口使用: #include <iostream> #include <algorithm> #include <functional> ...

  8. 巧用final

    1.final可以修饰函数的参数,以防止函数内部随意篡改不允许修改的参数. 2.在函数内部,把函数的局部变量声明为final类型,可以检查在函数内部它们是否的确只被赋值一次.

  9. 使用JDK中的安全包对数据进行加解密

    本文以使用DES对称加密算法为例使用jdk对数据进行加密解密. 首先需要了解Provider类,它是jdk引入的密码服务提供者概念,实现了Java安全性的一部分或者全部.Provider 可能实现的服 ...

  10. java基础知识拾遗(四)

    1.Runnable对象 启动线程:(new Thread(new MyRunnable()).start() 2.jsp中<%@ page language="java" ...