一篇文章帮你理解Java集合

一、集合

Java的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,Java集合还可用于保存具有映射关系的关联数组。
Java的集合大致上可分为:Set,List和Map三种体系,其中Set代表无序,不可重复的集合;List代表有序,重复的集合,而Map则代表具有映射关系的集合。
Queue体系集合,代表一种队列集合实现。
Java集合就像是一个容器,我们可以把多个对象(实际上是对象的引用,习惯上叫对象,)保存到集合容器中。

1.1 List(列表)

List集合特点:
1、它是一个元素存取有序的集合。例如,存元素的顺序是5、2、7。那么集合中,元素的存储就是按照5、2、7的顺序完成的)。
2、它是一个带有索引的集合。
3、集合中可以有重复的元素。

ArrayList集合:
只能存储引用数据类型ArrayList是顺序结构
特点:查询快,增删慢,线程不安全,效率高。常用方法:

在这里插入图片描述

public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
public E get(int index)               : 返回集合中指定位置的元素。
public E remove(int index)            : 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element)    : 用指定元素替换集合中指定位置的元素,返回值的更新前的元素
piblic int lastIndexOf(Object o)      : 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1

​LinkedList集合:

LinkedList底层数据结构是链表
特点:查询慢,增删快,线程不安全,效率高
在这里插入图片描述

常用方法:

public void addFirst(E e)  :将指定元素插入此列表的开头。
public void addLast(E e)   :将指定元素添加到此列表的结尾。
public E getFirst()        :返回此列表的第一个元素。
public E getLast()         :返回此列表的最后一个元素。
public E removeFirst()     :移除并返回此列表的第一个元素。
public E removeLast()      :移除并返回此列表的最后一个元素。
public E pop()             :从此列表所表示的堆栈处弹出一个元素。
public E pollFirst()       :检索并删除此列表的第一个元素,如果此列表为空,则返回 null 。  
public E pollLast()        :检索并删除此列表的最后一个元素,如果此列表为空,则返回 null 。 
public boolean isEmpty()   :如果列表不包含元素,则返回true

1.2 Map(映射)

Map集合特点:
元素无序元素通过键值对的方式进行存储。
键不可重复,值可重复。
在这里插入图片描述

HashMap常用方法:

public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的
值。
public V get(Object key) :根据指定的键,在Map集合中获取对应的值。
public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)public Collection<V> values() : 返回此地图中包含的值的Collection视图。 
public V replace(K key, V value) : 只有当目标映射到某个值时,才能替换指定键的条目。
  Tree

Map常用方法:

public V put(K key, V value)          : 把指定的键与指定的值添加到Map集合中。
public V remove(Object key)           : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
public V get(Object key)              :根据指定的键,在Map集合中获取对应的值。
public Set<K> keySet()                : 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)public Collection<V> values()         : 返回此地图中包含的值的Collection视图。 
public V replace(K key, V value)      : 只有当目标映射到某个值时,才能替换指定键的条目。 
public K firstKey()                   : 返回此地图中当前的第一个(最低)键。

1.3 set(集)

set集合特点:
1、元素无顺序
2、不包含重复的元素
在这里插入图片描述

HashSet常用方法:

public E add(E e)                 : 将指定的元素添加到此集合(如果尚未存在)。 
public void clear()               : 从此集合中删除所有元素。 
public boolean contains(Object o) : 如果此集合包含指定的元素,则返回 truepublic boolean isEmpty()          : 如果此集合不包含元素,则返回 truepublic boolean remove(Object o)   : 如果存在,则从该集合中删除指定的元素。 
public int size()                 : 返回此集合中的元素数(其基数)。  TreeSet常用方法:public E add(E e)                 : 将指定的元素添加到此集合(如果尚未存在)。 
public void clear()               : 从此集合中删除所有元素。 
public boolean contains(Object o) : 如果此集合包含指定的元素,则返回 truepublic boolean isEmpty()          : 如果此集合不包含元素,则返回 truepublic boolean remove(Object o)   : 如果存在,则从该集合中删除指定的元素。 
public int size()                 : 返回此集合中的元素数(其基数)。
public E first()                  : 返回此集合中当前的第一个(最低)元素。

2、ArrayList方法实例

 package com.xinzhi;/*
 *@author  Whispers 私语
 *@date    2020/2/12
 */import java.util.ArrayList;
import java.util.List;public class Test {
    public static void main(String[] args) {
        Test test = new Test();
        test.Test1();
    }
    public void Test1(){
        List<String> strings = new ArrayList<>();
        strings.add("sss");
        strings.add("aaa");
        strings.add("xxx");
        strings.add("www");
        strings.add(2,"hhh");
        strings.remove(2);//删除指定索引的元素
        strings.remove("www");//删除指定元素
        System.out.println("返回下标为2的元素:"+strings.get(2));
        System.out.println("查看集合中是否含有元素【xxx】"+strings.contains("xxx"));
        System.out.println("查看【sss】第一次出现的索引是"+strings.indexOf("sss"));
        System.out.println("查询此列表有没有元素:"+strings.isEmpty());
        System.out.println("查询此列表【hhh】最后一次出现的索引是"+strings.lastIndexOf("hhh"));
        strings.set(0,"yyy");//用索引为0元素替换yyy。
        System.out.println("此列表中元素数量为:"+strings.size());
        List<String> strings1 = strings.subList(2, 3);//返回此列表中指定的2(包括)和 3之间的元素。
        for (int i = 0; i < strings1.size(); i++) {
            System.out.println(strings1.get(i));
        }
        System.out.println("------");
        List<String> strings2 = new ArrayList<>();
        strings.add("sss");
        strings.add("aaa");
        strings.add("xxx");
        strings.add("www");
        strings2.addAll(strings);//将strings集合中的所有元素追加到strings2集合的末尾。
        for (int i = 0; i < strings2.size(); i++) {
            System.out.println(strings2.get(i));
        }
    }
}

​3、LinkList方法实例

package com.xinzhi;/*
*@author  A空巷
 *@date    2020/2/12
 */import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;public class TestLinkList {public static void main(String[] args) {
        TestLinkList testLinkList = new TestLinkList();
        testLinkList.test1();
    }
    public void test1(){
        LinkedList<String> strings = new LinkedList<>();
        strings.add("sss");
        strings.add("aaa");
        strings.add("xxx");
        strings.add("xxx");
        strings.add("xxx");
        strings.addFirst("hhhh"); //将元素插入列表的开头
        strings.addLast("iii");  //将元素插入列表的末尾
        strings.poll(); //删除此列表的头
        strings.pollLast();//删除此列表的最后一个元素
        System.out.println(strings.getFirst()); //获取列表中第一个元素
        System.out.println(strings.getLast());  //获取列表中最后一个元素
        String pop = strings.pop(); //从列表中弹出一个元素
        System.out.println(pop); //
        String s = strings.pollFirst();
        System.out.println("----"+s);}
}

​4、HashMap、TreeMap方法实例

package com.xinzhi;/*
 *@author  A空巷
 *@date    2020/2/12
 */import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class TestHashMap {
    public static void main(String[] args) {
        TestHashMap testHashMap = new TestHashMap();
        testHashMap.test1();
    }
    public void test1(){
        Map<String,User> map = new HashMap<>();
        map.put("111",new User("aaa",18,1));
        map.put("222",new User("bbb",18,1));
        map.put("333",new User("xxx",18,1));
        System.out.println(map.containsKey("111"));//通过键查找,返回 true
        System.out.println(map.isEmpty());//判断当前Map中是否为空
        map.remove("111");
        map.replace("222",new User("ccc",20,1));//替换
        //获取key
        Set<String> strings = map.keySet();
        //遍历所有的key
        for (String key : strings) {
            //通过key获取名字
            System.out.println(map.get(key).getName());}
        System.out.println("当前map中键值数量为:"+map.size());//返回所有的value
        Collection<User> values = map.values();
        //遍历value
        for (User value : values) {
            //通过value找name
            System.out.println(value.getName());
        }//map遍历
        //map存的都是entry这种键值对,使用增强for循环拿到一个个键值对
        for (Map.Entry<String, User> entrt : map.entrySet()) {
            System.out.println(entrt.getKey());
            System.out.println(entrt.getValue());
        }}
}

5、HashSet、TreeSet方法实例

/*package com.xinzhi;
 *@author  A空巷
 *@date    2020/2/12
 */import java.util.HashSet;
import java.util.Iterator;public class TestHashSet {
    public static void main(String[] args) {
        TestHashSet testHashSet = new TestHashSet();
        testHashSet.test1();
    }public void test1() {
        HashSet<String> strings = new HashSet<>();
        strings.add("sss");
        strings.add("aaa");
        strings.add("xxx");
        strings.add("www");
        strings.add("www");
        //strings.clear();//删除集合中所有元素
​
        System.out.println(strings.contains("aaa"));//查询当前集合中是否存在元素【aaa】
        System.out.println(strings.isEmpty());//判断当前集合是否为空
        strings.remove("www");//删除集合中www元素
        for (String string : strings) {
            System.out.println(string);
        }
        System.out.println("当前集合中元素个数为:" + strings.size());
    }
}




​6、set自动排序

 HashSet<Integer> strings = new HashSet<>();
        strings.add(10);
        strings.add(3);
        strings.add(4);
        strings.add(2);
        strings.add(1);
        for (Integer string : strings) {
            System.out.println(string);
        }
运行结果---
1
2
3
4
10

7、set去重

package com.xinzhi;/*
 *@author  A空巷
 *@date    2020/2/12
 */import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;public class TestArrayList {
    public static void main(String[] args) {
        TestArrayList testArrayList = new TestArrayList();
        testArrayList.test1();
    }
    public void test1(){
        List<String> strings = new ArrayList<>();
        strings.add("sss");
        strings.add("aaa");
        strings.add("xxx");
        strings.add("xxx");
        strings.add("xxx");
        strings.add("www");
        strings.add("www");
​
        HashSet<String> strings1 = new HashSet<>(strings);
        for (String string : strings1) {
            System.out.println(string);
        }
        strings = new ArrayList<>(strings1);
    }
}
发布了6 篇原创文章 · 获赞 6 · 访问量 107

猜你喜欢

转载自blog.csdn.net/qq_43658155/article/details/104302786