简单阐述一下Java集合的概要

概念

Java中的集合就是一种容器,可以容纳不同种类的数据,这些容纳是建立在未知的基础上。

优点

1.可以动态保存任意多个对象,使用比较方便。

2.提供一系列方便的操作对象的方法:add、remove、set、get等

3.使用集合添加,删除新元素的示意代码简洁。

集合框架图

Collection接口和常用方法

1.Collection实现子类可以存放多个元素,每个元素可以是Object

2.有些Collection的实现类,可以存放重复的元素,有些不可以

3.有些Collection的实现类,有些是有序的(list),有些不是有序的(set)

4.Collection接口没有直接的实现子类,是通过他的子接口Set和List来实现的。

Collection接口常用方法

1.add 添加单个元素 2.remove 删除指定元素 3.contains 查找元素是否存在

4.size 获取元素个数 5.isEmpty 判断是否为空 6.clear 清空 7.addAll 添加多个元素

8.containsAll 查找多个元素是否都存在 9.removeAll 删除多个元素

Collection迭代器遍历元素

1.Iterator对象称为迭代器,主要用于遍历Collection集合中的元素

2.所有实现了Collection接口的集合类都有一个iterator()方法,用以返回一个实现了

​ iterator接口的对象,即可以返回一个迭代器

3.Iterator仅用于遍历集合,它本身并不存放对象

for循环增强

增强for循环,可以代替iterator迭代器

特点:增强for就是简化版的iterator,本质一样,只能用于遍历集合或数组

基本语法

for(元素类型 元素名:集合名或数组名){
	访问元素
}
/**案例演示*/
public class Card {
    public static void main(String[] args) {
        /**
         *  1.准备牌
         *  2.洗牌
         *  3.发牌
         *  4.看牌*/
        //1.
        //创建一个牌盒
        ArrayList<String> BoxCard = new ArrayList<String>();
        //创建花色集合
        ArrayList<String> color = new ArrayList<String>();
        //创建数字集合
        ArrayList<String> numbers = new ArrayList<String>();
        //添加花色牌
        color.add("♠");
        color.add("♥");
        color.add("♦");
        color.add("♣");
        //创建数字牌
        for (int i = 2; i <=10 ; i++) {
            numbers.add(i+"");
        }
        numbers.add("J");
        numbers.add("Q");
        numbers.add("k");
        numbers.add("A");
        //把花色牌和数字牌添加到一个大牌盒
        for (String o:color) {
            for (String n : numbers) {
                String card = o + n;
                BoxCard.add(card);
            }
        }
        BoxCard.add("BigKing");
        BoxCard.add("SmallKing");
        //2.
        Collections.shuffle(BoxCard);
        System.out.println(BoxCard);
        //3.发牌
            //创建三个用户
        ArrayList<String> player1 = new ArrayList<String>();

        ArrayList<String> player2 = new ArrayList<>();
        ArrayList<String> player3 = new ArrayList<>();
        //递牌
        ArrayList<String> GiveCards = new ArrayList<>();

        for (int m = 0; m <BoxCard.size(); m++) {
            //获取牌面
            String cards = BoxCard.get(m);
            //发牌顺序余三张
            if (m>=51){
                GiveCards.add(cards);
            }else {
                if (m % 3 ==0){
                    player1.add(cards);//获取第一个玩家牌数
                }else if (m % 3 ==1){
                    player2.add(cards);//获取第二个玩家牌数
                }else {
                    player3.add(cards);//获取第三个玩家牌数
                }
            }
        }
        //看牌
        System.out.println("第一个玩家"+player1);
        System.out.println("第二个玩家"+player2);
        System.out.println("第三个玩家"+player3);
        System.out.println("底牌"+GiveCards);
    }
}

list接口和常用方法

1.list集合类中元素有序(及添加顺序和取出顺序一致)、可重复

2.list集合类中的每个元素都有其对应的顺序索引,及支持索引

3.list容器中的元素对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素

4.JDK API中list接口常用实现的类:ArrayList、LinkedList和Vector。

常用方法

add 添加单个元素   remove  删除指定元素 

public E get(int index)返回集合中指定位置
public E set(int index ,E element)用指定元素替换集合中指定位置的元素,返回值的更新前的元素
public class olg {
    public static void main(String[] args) {
        //创建集合对象
        List<String> list = new ArrayList<String>();
        //尾部添加指定数据
        list.add("光之子");
        list.add("神印王座");
        list.add("酒神");
        list.add("诸神黄昏");
        System.out.println(list);
        //指定位置添加
        list.add(1,"全职高手");
        System.out.println(list);
        //删除指定元素
        System.out.println(list.remove(3));
        list.set(1,"斗罗大陆");
        System.out.println(list);
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
        //增强for
        for (String s:list){
            System.out.println(s);
        }
    }
}

ArrayList

java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能 为查询数据、遍历数据,所以 ArrayList 是最常用的集合。

LinkedList集合

java.util.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 void push(E e) :将元素推入此列表所表示的堆栈。

 public boolean isEmpty() :如果列表不包含元素,则返回true。
public class Linked {
    public static void main(String[] args) {
        LinkedList<String> link = new LinkedList<String>();
        //添加第一个元素值
        link.addFirst("龙皓晨");
        link.addFirst("姬动");
        link.addFirst("叶音竹");
        link.addFirst("长弓威");
        System.out.println(link);
        //获取元素
        System.out.println(link.getFirst());//第一个值
        System.out.println(link.getLast());//最后一个值
        //删除元素
        System.out.println(link.removeFirst());
        System.out.println(link.removeLast());

        while (!link.isEmpty()){//判断集合是否为空
            System.out.println(link.pop());//弹出集合中的栈顶元素
        }
        System.out.println(link);
    }
}

Map集合(键值对集合)

现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等, 这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即 java.util.Map 接口。

HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致。由于要保证键的唯一、不重 复,需要重写键的hashCode()方法、equals()方法。

LinkedHashMap:HashMap下有个子类LinkedHashMap,存储数据采用的哈希表结构+链表结构。 通过链表结构可以保证元素的存取顺序一致;通过哈希表结构可以保证的键的唯一、不重复,需要重写键的 hashCode()方法、equals()方法。

常用方法

public V put(K key, V value)`: 把指定的键与指定的值添加到Map集合中。 

public V remove(Object key)`: 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的 值。`

public V get(Object key)` 根据指定的键,在Map集合中获取对应的值。 ` 

boolean containsKey(Object key) ` 判断集合中是否包含指定的键。 

public Set keySet()`: 获取Map集合中所有的键,存储到Set集合中。 

public Set> entrySet()`: 获取到Map集合中所有的键值对对象的集合(Set集合)。
public class HashMapdemo {
    public static void main(String[] args) {
        //创建Map对象
        HashMap<String,String> map = new HashMap<String,String>();

        //添加元素到集合
        map.put("李世民","长孙皇后");
        map.put("1","朱元璋");
        System.out.println(map);

        //删除
        System.out.println(map.remove("1"));
        System.out.println(map);

        //查看李世民的皇后
        System.out.println(map.get("李世民"));
    }
}
   //添加元素到集合
        map.put("李世民","长孙皇后");
        map.put("1","朱元璋");
        System.out.println(map);

        //删除
        System.out.println(map.remove("1"));
        System.out.println(map);

        //查看李世民的皇后
        System.out.println(map.get("李世民"));
    }
}

到此这篇关于简单阐述一下Java集合的概要的文章就介绍到这了,更多相关Java集合内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中将List拆分为多个小list集合的实现代码

    前言:在平常写代码时候可能会遇到需要将一个大list拆分多个小list,进行一些业务处理. 一.如何将List拆分为多个小list 如何将List拆分多个小list,首先我们需要list.sublist这个方法如何使用. list.sublist(int fromIndex, int toIndex)方法有两个参数. fromIndex:为起始索引(包含) toIndex:为终止索引(不包含)的子列表(List) 但值得注意的是,返回的这个子列表的幕后其实还是原列表:也就是说,修改这个子列表,将

  • 在java中ArrayList集合底层的扩容原理

    第一章 前言概述 第01节 概述 底层说明 ArrayList是List的实现类,它的底层是用Object数组存储,线程不安全 后期应用 适合用于频繁的查询工作,因为底层是数组,可以快速通过数组下标进行查找 第02节 区别 区别方向 ArrayList集合 LinkedList集合 线程安全 不安全 不安全 底层原理 Object类型数组 双向链表 随机访问 支持(实现 RandomAccess接口) 不支持 内存占用 ArrayList 浪费空间, 底层是数组,末尾预留一部分容量空间 Link

  • Java 集合的Contains和Remove方法

    一.包含与删除两种方法解析 1.boolean contains(Object o);判断集合中是否包含某个元素. package com.bjpowernode.java_learning; import java.util.*; ​ public class D85_1_ContainsMethod { public static void main(String[] args) { //创建集合 Collection c = new ArrayList(); //创建两个Integer类型

  • 详解Java集合中的基本数据结构

    集合中三大数据结构 数组 内存地址连续 可以通过下标的成员访问,下标访问的性能高 增删操作有较大的性能消耗(需要动态扩容) 链表(双向链表) 灵活的空间要求,存储空间不要求连续 不支持下标访问,支持顺序遍历搜索 针对增删操作找到对应的节点改变链表的头尾指针指向即可,无需移动元数据存储位置 树(Java中二叉树特性) 某节点的左子树节点仅包含小于该节点的值 某节点的右子树节点仅包含大于该节点的值 节点必须是二叉树 顺序排列 存在问题:树可以认为是介于数组和链表二者之间的一种数据结构,拥有较快的查询

  • JAVA遍历Map集合的几种方法汇总

    今天学习了Map集合的几种方法,尤其是遍历Map集合感觉尤为重要,所以发出来供大家学习和自己复习以用. 众所周知Map集合里存储元素是以键值对的方式存储元素,一个是Key一个是value. 开发过程中推荐使用第四种方法,本文章注释很清晰,仔细看完相信会对你有所帮助的! 方法一: 首先去通过获取迭代器,通过迭代器去遍历集合,获取key然后通过key去获取value,然后就完成了Map集合元素的遍历 public static void main(String[] args) { //使用泛型去创建

  • Java基础之集合Set详解

    一.概述 Set是Java中的集合类,提供了一种无顺序,不重复的集合.常用的子类包括HashSet, TreeSet等. HashSet底层使用HashMap实现,根据元素的hashCode和equals来判断是否为重复元素.当元素的hashCode相同且equals返回true时则认为是重复元素.因为使用了hash算法所以HashSet有很好的添加和访问性能.可以放入null但只能放一个null TreeSet底层使用红黑树实现,Set上的元素被放在一个自动排序的红黑树中.不能放入null 二

  • 简单阐述一下Java集合的概要

    概念 Java中的集合就是一种容器,可以容纳不同种类的数据,这些容纳是建立在未知的基础上. 优点 1.可以动态保存任意多个对象,使用比较方便. 2.提供一系列方便的操作对象的方法:add.remove.set.get等 3.使用集合添加,删除新元素的示意代码简洁. 集合框架图 Collection接口和常用方法 1.Collection实现子类可以存放多个元素,每个元素可以是Object 2.有些Collection的实现类,可以存放重复的元素,有些不可以 3.有些Collection的实现类,

  • 简单的理解java集合中的HashSet和HashTree几个重写方法

    Java中的set是无序的,但是是不可重复的 HashSet底层是哈希表,通过调用hashcode和equals方法实现去重 当我们HashSet里面存的是字符串时,就能默认去重了,因为String已经重写了hashcode和euqals方法 public static void main(String[] args) { HashSet<String> set = new HashSet(); set.add("java"); set.add("c")

  • Java集合Iterator迭代的实现方法

    我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.hasNext()){ String string = iterator.next(); //do something } 迭代其实我们可以简单地理解为遍历,是一个标准化遍历各类容器里面的所有对象的方法类,它是一个很典型的设计模式.Iterator 模式是用于遍历集合类的标准访问方法.它可以把访问逻辑从不同类型的集合类中抽象出来

  • Java集合Stack源码详解

    概要 学完Vector了之后,接下来我们开始学习Stack.Stack很简单,它继承于Vector.学习方式还是和之前一样,先对Stack有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它. 第1部分 Stack介绍 Stack简介 Stack是栈.它的特性是:先进后出(FILO, First In Last Out). java工具包中的Stack是继承于Vector(矢量队列)的,由于Vector是通过数组实现的,这就意味着,Stack也是通过数组实现的,而非链表.当然,我们也可以

  • 关于Java集合框架的总结

    本篇文章先从整体介绍了Java集合框架包含的接口和类,然后总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析.当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理.从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类型. 一.综述 所有集合类都位于java.util包下.集合中只能保存对象(保存对象的引用变量).(数组既可以保存基本类型的数据也可以保存对象). 当我们把一个对象放入集合中后,系统会把所

  • Java集合Map常见问题_动力节点Java学院整理

    Java集合Map常见问题,供大家参考,具体内容如下 1."你知道HashMap的工作原理吗?" "你知道HashMap的get()方法的工作原理吗?" 答:"HashMap是基于hashing的原理,我们使用put(key, value)存储对象到HashMap中,使用get(key)从HashMap中获取对象.当我们给put()方法传递键和值时,我们先对键调用hashCode()方法,返回的hashCode用于找到bucket位置来储存Entry对象.

  • Java集合框架中迭代器Iterator解析

    Java里面的数组数据可以通过索引来获取,那么对象呢?也是通过索引吗?今天我们就来分析一下Java集合中获取集合对象的方法迭代-Iterator. 本篇文章主要分析一下Java集合框架中的迭代器部分,Iterator,该源码分析基于JDK1.8,分析工具,AndroidStudio,文章分析不足之处,还请指正! 一.简介 我们常常使用 JDK 提供的迭代接口进行 Java 集合的迭代. Iterator iterator = list.iterator(); while(iterator.has

  • Java集合ArrayDeque类实例分析

    Java集合ArrayDeque类实例分析 前言 ArrayDeque类是双端队列的实现类,类的继承结构如下面,继承自AbastractCollection(该类实习了部分集合通用的方法,其实现了Collection接口),其实现的接口Deque接口中定义了双端队列的主要的方法,比如从头删除,从尾部删除,获取头数据,获取尾部数据等等. public class ArrayDeque<E> extends AbstractCollection<E> implements Deque&

  • Java集合框架LinkedList详解及实例

    Java集合框架LinkedList详解 LinkedList定义 package java.util; public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{ transient int size = 0; transient Node<E> first;

  • 用Java集合中的Collections.sort方法如何对list排序(两种方法)

    第一种是list中的对象实现Comparable接口,如下: /** * 根据order对User排序 */ public class User implements Comparable <user> { private String name; private Integer order; public String getName() { return name; } public void setName(String name) { this.name = name; } publi

随机推荐