Java基础__Java中集合类

 

 

  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

 

 

  

 

 

posted @ 2019-11-25 13:39  Cynical丶Gary  阅读(316)  评论(0编辑  收藏  举报