ArrayList:有序、可重复、线程不安全、内部使用数组进行存储

  LinkedList:有序、可重复、线程不安全、内部使用引用进行存储【可以很方便的进行插入、删除数据】

  Vector:有序、可重复、线程安全

  HastSet:无序、不可重复(自动去重)

    TreeSet存放数据是有序的

    HashSet存放数据是无序的

一、ArrayList集合类的简单创建和使用

  创建一个集合对象

  ArrayList arr = new ArrayList();

  往集合中添加数据【arr.add(Object)】

    arr.add("小明");

  通过索引从集合中取得对象【arr.get(Index)】

  arr.get(1)

package com.Gary.arryaylist;

import java.util.ArrayList;

public class ArrayListDemo {

       public static void main(String[] args){
//集合对象
ArrayList arr = new ArrayList(); //往集合中添加对象
arr.add("小明");
arr.add("小红");
arr.add("小梁"); //使用索引添加对象
System.out.println(arr.get(0)); } }

ArrayListDemo.java

二、ArrayList集合里面数据的添加和数据的遍历

  往一个集合中添加一个集合(多条数据)

    //创建多条数据
ArrayList arr2 = new ArrayList();
arr2.add("Gary");
arr2.add("Gary2"); // 往集合中添加多条数据
arr.addAll(arr2);

  在制定位置插入一个数据【arr.add(Index,Object)】

    arr.add(4,"Garyyy");

  遍历集合

  //使用for循环遍历
  for(int i=0;i<arr.size();i++)
  {
    System.out.println("遍历:"+arr.get(i));
  }

package com.Gary.arryaylist;

import java.util.ArrayList;

public class ArrayListDemo {

    public static void main(String[] args) {
// 集合对象
ArrayList arr = new ArrayList(); // 往集合中添加一条数据
arr.add("小明");
arr.add("小红");
arr.add("小梁"); //创建多条数据
ArrayList arr2 = new ArrayList();
arr2.add("Gary");
arr2.add("Gary2"); // 往集合中添加多条数据
arr.addAll(arr2); // 使用索引添加对象取得第四号元素Gary
System.out.println("1:"+arr.get(3)); //在制定位置插入一个数据
arr.add(4,"Garyyy");
// 使用索引添加对象取得第四号元素Gary
System.out.println("2:"+arr.get(3)); //使用for循环遍历
for(int i=0;i<arr.size();i++)
{
System.out.println("遍历:"+arr.get(i));
} } }

ArrayListDemo.java

三、ArrayList集合中数据的移除和数据访问

  删除指定数据【arr.remove(Index)】

    arr.remove(1);

  删除arrayList集合中"Gary"【arr.remove(Object)】

  arr.remove("Gary");

  判断集合是否为空【arr.isEmpty()】

  判断集合是否包含某个元素arr.contains(Object)

    arr.contains("Gary")

package com.Gary.arryaylist;

import java.util.ArrayList;

public class ArrayListDemo {

    public static void main(String[] args) {
// 集合对象
ArrayList arr = new ArrayList(); // 往集合中添加一条数据
arr.add("小明");
arr.add("小红");
arr.add("小梁"); //创建多条数据
ArrayList arr2 = new ArrayList();
arr2.add("Gary");
arr2.add("Gary2"); // 往集合中添加多条数据
arr.addAll(arr2); // 使用索引添加对象取得第四号元素Gary
//System.out.println("1:"+arr.get(3)); //在制定位置插入一个数据
arr.add(4,"Garyyy");
// 使用索引添加对象取得第四号元素Gary
//System.out.println("2:"+arr.get(3)); //使用for循环遍历
//for(int i=0;i<arr.size();i++)
//{
// System.out.println("遍历:"+arr.get(i));
//} //删除第一个数据"小明"
arr.remove(1);
//删除arrayList集合中"Gary"
arr.remove("Gary");
//使用for循环遍历
for(int i=0;i<arr.size();i++)
{
System.out.println("遍历:"+arr.get(i));
} //判断集合是否为空
System.out.println("集合是否为空:"+arr.isEmpty());
//判断集合是否包含某个元素
System.out.println("集合是否包含Gary:"+arr.contains("Gary")); //已经移除
System.out.println("集合是否包含Gary:"+arr.contains("Gary2")); //存在Gary2 Object[] oArray = arr.toArray();
for(int i=0;i<oArray.length;i++)
{
//使用数值进行遍历
System.out.println("数据遍历:"+oArray[i]);
} } }

ArrayListDemo.java

  此时arrayList集合中还存在的元素有:小明、小梁、Garyyy、Gary2

四、使用遍历器和增强版for循环遍历ArrayList集合

  创建一个遍历器Iterator

    Iterator iterator = arr.iterator();

  按Index索引下标0开始遍历,遍历Iterator中的元素

    System.out.println(iterator.next());

package com.Gary.arryaylist;

import java.util.ArrayList;
import java.util.Iterator; public class ArrayListDemo { public static void main(String[] args) {
// 集合对象
ArrayList arr = new ArrayList(); // 往集合中添加一条数据
arr.add("小明");
arr.add("小红");
arr.add("小梁"); //创建多条数据
ArrayList arr2 = new ArrayList();
arr2.add("Gary");
arr2.add("Gary2"); // 往集合中添加多条数据
arr.addAll(arr2); //在制定位置插入一个数据
arr.add(4,"Garyyy"); //删除第一个数据"小明"
arr.remove(1);
//删除arrayList集合中"Gary"
arr.remove("Gary"); //使用Iterator遍历器进行遍历
Iterator iterator = arr.iterator();
//按Index索引下标0开始遍历,遍历三个元素
System.out.println(iterator.next());
//System.out.println(iterator.next());
//System.out.println(iterator.next()); while(iterator.hasNext())
{
//使用遍历器进行遍历
System.out.println("Iterator遍历:"+iterator.next());
} //增强版for循环
for(Object o:arr)
{
System.out.println("增强版for循环:"+o);
} } }

ArrayListDemo.java

五、关于Vector集合类的使用

  创建一个Vector集合

    Vector v = new Vector();

  往集合中添加元素【v.add(Object)】

  v.add("Gary");

  通过索引删除Vector集合中的元素【v.remove(index)】

    v.remove(1);

package com.Gary;

import java.util.Vector;

public class VectorDemo {

    public static void main(String[] args) {
Vector v = new Vector(); v.add("Gary");
v.add("Gary1");
v.add("Gary2");
v.add("Gary3"); for(Object o :v) {
System.out.println("使用增强for循环:"+o);
} //得到Vector中的第二个元素
System.out.println(v.get(1)); //移除第二个元素
v.remove(1);
for(Object o:v){
System.out.println("第二次使用增强for循环:"+o);
} } }

VectorDemo.java

六、LinkedList集合类的使用

  LinkedList集合多了两个方法,可以在列表的首位添加元素

  内部使用引用进行数据的存储

        ll.addFirst();
ll.addLast();

package com.Gary;

import java.util.LinkedList;

public class LinkedListDemo {

    public static void main(String[] args) {
LinkedList ll = new LinkedList(); ll.add(1);
ll.add(2);
ll.add(3);
ll.add(4); //在列表的首位添加元素
ll.addFirst(100);
ll.addLast(200); for(Object o:ll){
System.out.println("使用增强for循环:"+o);
} } }

LinkedListDemo.java

七、集合中泛型的使用

  直接创建一个新集合时

    ArrayList al = new ArrayList();

  ArrayList创建的是一个Object类型,可以在创建ArrayList后边添加一个泛型

    //泛型 ArrayList中只能存储Int类型
ArrayList<Integer> al = new ArrayList<Integer>();

  其它集合的泛型

    //ArrayList al = new ArrayList();
//泛型中不能直接存放基本数据类型->基本类型的刨床类
   //数据里边可以存储 引用类型 和 其它类型 //泛型 ArrayList中只能存储Int类型
ArrayList<Integer> al = new ArrayList<Integer>(); //泛型 Vector中只能存储String类型
Vector<String> v = new Vector<String>(); //泛型 LinkedList中只能存储字符
LinkedList<Character> ll = new LinkedList<Character>();
package com.Gary;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Vector; public class Gary { public static void main(String[] args){
//ArrayList al = new ArrayList();
//泛型中不能直接存放基本数据类型->基本类型的刨床类 //泛型 ArrayList中只能存储Int类型
ArrayList<Integer> al = new ArrayList<Integer>(); //泛型 Vector中只能存储String类型
Vector<String> v = new Vector<String>(); //泛型 LinkedList中只能存储字符
LinkedList<Character> ll = new LinkedList<Character>(); } }

Gary.java

八、HashSet集合类的使用

  创建HastSet集合类

    HashSet set = new HashSet();

  HashSet 自动去重、无序

package com.Gary;

import java.util.HashSet;

public class HashSetDemo {

    public static void main(String[] args) {
//ArrayList LinkedList Vector 可以添加重复数据、有序、按照添加顺序排列
//HashSet 自动去重、无序
//无法通过索引获取到某个元素
HashSet set = new HashSet();
set.add("Gary");
set.add("Gary1");
set.add("Gary2");
set.add("Gary3");
set.add(1);
set.add("Gary"); for(Object o : set)
{
System.out.println("增强版for循环"+o);
} } }

HashSetDemo.java

九、TreeSet集合类的使用

  TreeSet和HashSet区别:

  TreeSet存放数据是有序的

  HashSet存放数据是无序的

package com.Gary;

import java.util.TreeSet;

public class TreeSetDemo {

    public static void main(String[] args){
//输出有序的
TreeSet set = new TreeSet(); set.add("Gary1");
set.add("Gary2");
set.add("Gary3");
set.add("Gary4");
set.add("Gary5"); for(Object o : set){
System.out.println("增强for循环:"+o);
} } }

TreeSetDemo.java

十、使用集合存储自定义类的类型数据

  创建自定义Student学生类,添加两个属性

    private int age;
private String name;
package com.Gary;

public class Student {

    private int age;
private String name; public Student(int age, String name) {
super();
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
} }

Student.java

  创建一个集合,用于存储Student学生类型

    ArrayList<Student> al = new ArrayList<Student>();

package com.Gary;

import java.util.ArrayList;

public class Gary01 {

    public static void main(String[] args) {

        ArrayList<Student> al = new ArrayList<Student>();

        Student s = new Student(20,"Gary");
al.add(s); for(Student temp : al){
System.out.println("年龄:"+temp.getAge()+" 名字:"+temp.getName());
} } }

Gary01.java

十一、HashMap集合类的创建和使用

  HashMap集合以键值对key -- value去存储数据

    所有的key是不可以重复的 -> key重复会照成数据的覆盖

    所有的value是可以重复的 

package com.Gary;

import java.util.HashMap;

public class HashMapDemo {

    public static void main(String[] args){

        //HashMap里面保存的是键值对   key - value
//所有的key不可以重复
//所有的value不可以重复 HashMap map = new HashMap(); map.put("Gary", 20);
map.put("Gary", 21); //覆盖键值对,如果相同的话,会把之前的值给覆盖掉
map.put("Gary", 21);
map.put("Gary2", 22); System.out.println(map.get("Gary")); for(Object key : map.keySet()) {
System.out.println("通过键值对去取得值:"+key+"---"+map.get(key));
} } }

HashMapDemo.java

  

Java基础__Java中集合类的更多相关文章

  1. Java基础__Java中自定义集合类

    Java基础__Java中集合类 传送门 自定义MyArrayList集合实现:增加数据.取数据.查看集合中数据个数方法 package com.Gary; public class MyArrayL ...

  2. Java基础__Java中常用数学类Math那些事

     测试 package Cynical_Gary; public class Cynical_Text { public static void main(String[] args){ System ...

  3. Java基础__Java中异常处理那些事

    一.Exception 类的层次 所有的异常类是从 java.lang.Exception 类继承的子类. Exception 类是 Throwable 类的子类.除了Exception类外,Thro ...

  4. Java基础学习中一些词语和语句的使用

    在Java基础学习中,我们刚接触Java会遇到一些词和语句的使用不清的情况,不能很清楚的理解它的运行效果会是怎么样的,如:break,continue在程序中运行效果及跳转位置, 1.先来看看brea ...

  5. Java基础(中)

    面向对象基础 面向对象和面向过程的区别 两者的主要区别在于解决问题的方式不同: 面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题. 面向对象会先抽象出对象,然后用对象执行方法的方式 ...

  6. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  7. 有关JAVA基础学习中的集合讨论

        很高兴能在这里认识大家,我也是刚刚接触后端开发的学习者,相信很多朋友在学习中都会遇到很多头疼的问题,希望我们都能够把问题分享出来,把自己的学习思路整理出来,我们一起探讨一起成长.    今天我 ...

  8. java基础---->java8中的函数式接口

    这里面简单的讲一下java8中的函数式接口,Function.Consumer.Predicate和Supplier. 函数式接口例子 一.Function:接受参数,有返回参数 package co ...

  9. java基础---->String中的split方法的原理

    这里面主要介绍一下关于String类中的split方法的使用以及原理. split函数的说明 split函数java docs的说明: When there is a positive-width m ...

随机推荐

  1. Thread 和 Runnable

    Thread 和 Runnable 1. 简介 Java 主要是通过 java.lang.Thread 类以及 java.lang.Runnable 接口实现线程机制的. Thread 类为底层操作系 ...

  2. Mybatis 多个参数传入的多种方法

    ist<XXXBean> getXXXBeanList(HashMap map); <select id="getXXXBeanList" parameterTy ...

  3. NopCommerce的autofac的理解

    nop项目4.1是core.2.1开发的,Startup.cs文件开始 从入口进去ServiceCollectionExtensions这个文件 this IServiceCollection ser ...

  4. 【原创】大叔经验分享(82)logstash一个实例运行多个配置文件

    logstash一个实例运行多个配置文件,将所有配置文件放到以下目录即可 /usr/share/logstash/pipeline 但是默认行为不是每个配置文件独立运行,而是作为一个整体,每个inpu ...

  5. zepto学习(三)之详解

    zepto Zepto就是jQuery的移动端版本, 可以看做是一个轻量级的jQuery github地址: https://github.com/madrobby/zepto 官方地址: http: ...

  6. js之数据类型(对象类型——单体内置对象——Math)

    Math是一个内置对象,它具有数学常数和函数的属性和方法.Math对象用于执行数学任务,和其它对象不同,Math只是一个静态对象并没有Math()构造函数,实际上,Math()只是一个由js设置的对象 ...

  7. flask开发环境

    1. 创建虚拟环境flask_py3 虚拟环境是一个互相隔离的目录 mkvirtualenv flask_py3 2.安装flask包 pip install flask==0.10.1 其他:导入f ...

  8. Django restfulframework 开发相关知识 整理

    目录 目录 前言 前后端分离 实现前后端分离的方法 前后端分离带来的优点 RESTful十大规范 协议规范 域名规范 版本表示规范 url使用名词 http请求动词 过滤条件 状态码 错误信息 请求方 ...

  9. ulimit 命令详解 socket查看linux最大文件打开数

    ulimit 命令详解     Linux对于每个用户,系统限制其最大进程数.为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数 可以用ulimit -a 来显示当前的各种用户进程限 ...

  10. MySQL数据库常见问题1:关于 “ MySQL Installer is running in Community mode ” 的解决办法

     现象: MYSQL在安装完成后,系统能正常运行,但是第二天出现了如下一个提示框,如下图:  给个人人都看得懂的如下图: 解决办法:      这个是新版本MySQL服务自带的一个定时任务,每天23: ...