List集合,数据结构,List子类

List集合特点:

                     1.有序的;

                     2.可以存储重复的元素;

                     3.可以通过索引访问元素

           新增的方法:

                        1.public void add(int index,E elemet)           将指定的元素,添加到该集合中的指定位置上

                          例如:

   public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("郭德纲");
        list.add("小岳岳");
        list.add("于谦");
        list.add("郭麒麟");
        list.add(1,"柳岩");
        System.out.println("索引为一的元素为:"+list);
    }
输出的就是把“柳岩”插到了索引为1的位置,其余元素往后移动。

                   2.public E get(int index)         返回集合中指定位置的元素

                   例如:

                 String str=list.get(1);
                 System.out.println(str);
                 得到的就是索引为1的元素 柳岩

                   3.public E remove(int index)         移除列表中指定位置的元素,返回的是被移除的元素

                  例如:

扫描二维码关注公众号,回复: 5768357 查看本文章
        String st=list.remove(1);
        System.out.println(st);
        把索引为1的柳岩移除

                   4.public E set (int index, E element)          用指定元素替换集合中指定位置的元素

                  例如:

           String s=list.set(1,"柳岩");
           System.out.println(s);
           System.out.println(list);
           输出的s为集合中索引为1的元素,list为把小岳岳替换为柳岩后的样子

              注意:1.上面的四个方法有个共同的特征,都带索引的参数;

                         2.上面的四个方法中,在使用索引时,必须保证索引的正确,否则会抛索引越界异常

                            List<String> list=new ArrayList<>();

                            System.out.println(list.get(0));      抛异常java.lang.IndexOutOfBoundsException

                            System.out.println(list.remove(0))      抛异常java.lang.IndexOutOfBoundsException

数据结构

                 1  定义:各种不同的集合,采用了不同的存储数据的方式,这种存储数据的方式就叫数据结构

                 2  各种不同的数据结构,会影响“增删改查”的性能

                 3 常用的数据结构:

                       (1)栈结构 :   后进先出

                  图片解释:

        (2)队列结构 : 先进先出                       

                 (3)数组结构: 通过索引查询快,增删慢

                 (4)链表结构 : 查询慢,增删快(仅指增删的两个动作)

                 (5)二叉树 :查询快,类似于二分查找

List子类:

                ArrayList集合与LinkedList集合(这里主要介绍LinkedList集合)

               ArrayList:数组实现

                                无特有方法

               LinkedList:链表实现

                            (1)public void addFirst(E e)             将指定元素插入此列表的开头

                            (2)public void addLast(E e)             将指定元素添加到此列表的结尾

                            (3)public E getFirst()                        返回此列表的第一个元素

                            (4)public  E getLast()                      返回此列表的最后一个元素

                            (5)public E removeFirst()               移除并返回此列表的 第一个元素

                             (6)public E removeLast()                 移除并返回此列表的最后一个元素

                           (7)public E pop()                                从此列表所表示的堆栈处弹出一个元素(弹)

                            (8)public void push(E e)                     将元素推入此列表所表示的堆栈

                             (9)public boolean isEmpty()              如果列表不包含元素,则返回true

Set集合

                       set集合的特点:

                                               1.无序的;

                                               2.不能存储重复的元素;

                                               3.不能通过索引访问元素

                子类HashSet

                               HashSet底层的实现其实是一个HashMap支持

                                它存储的元素是不重复的,并且元素都是无序的(存储的顺序不一致)

                                hashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。

                                 保证元素唯一性的方式依赖于:hashCode与equals方法

          例如: 

public class Demo01 {
    public static void main(String[] args) {
        Set<String> set = new HashSet<>();
        set.add("2");
        set.add("1");
        set.add("3");
        set.add("4");
        set.add("4");
        Iterator<String> it = set.iterator();
        while (it.hasNext()) {
            System.out.print(it.next()+"   ");
        }
    }
}
结果为1  2  3  4
并不是按照自己输入的顺序来排的
set不存储相同的元素,相同元素比较的是Object中的hashCode()和equals()方法,也就是地址值,相同元素的地址值是一样的,所以只存储一个。

          HashSet存储自定义对象:要求自定义对象必须重写hashCode()和equals()方法,如果不重写,就比较Object中的方法,因为它们是不同的对象,所以地址值是不一样的,。所以会把相同的元素存储进去。

          HashSet验证元素唯一性的方式:

         在add方法中,会将参数对象与已存储的所有对象依次比较:

                                           1.先比较两个对象的hashCode()是否相同

                                                        不同:直接存

                                                        相同:在调用equals()比较两个对象

                                                                       不同: 存

                                                                       相同:不存

猜你喜欢

转载自blog.csdn.net/qq_44824292/article/details/88805882