zoukankan      html  css  js  c++  java
  • java基础——集合

    java基础——集合


    Java标准库自带的java.util包提供了集合类:Collection,它是所有其他集合类的根接口。在Collection的基础上,Java的java.util包主要提供了以下三种类型的集合:

    * List:一种有序列表的集合,例如,按索引排列的Student的List;
    * Set:一种保证没有重复元素的集合,例如,所有无重复名称的Student的Set;
    * Map:一种通过键值(key-value)查找的映射表集合,例如,根据Student的name查找对应Student的Map。
    

    Java集合的设计有几个特点:

    1. 是实现了接口和实现类相分离,例如,有序表的接口是List,具体的实现类有ArrayList,LinkedList等,
    2. 是支持泛型,我们可以限制在一个集合中只能放入同一种数据类型的元素,例如:
    	* List<String> list = new ArrayList<>(); // 只能放入String类型
    

    最后,Java访问集合总是通过统一的方式——迭代器(Iterator)来实现,它最明显的好处在于无需知道集合内部元素是按什么方式存储的


    List

    • 在集合类中,List是最基础的一种集合:它是一种有序链表。

      List的行为和数组几乎完全相同:List内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置,List的索引和数组一样,从0开始。

      数组和List类似,也是有序结构,如果我们使用数组,在添加和删除元素的时候,会非常不方便。

    • 我们考察List接口,可以看到几个主要的接口方法:

        在末尾添加一个元素:void add(E e)
        在指定索引添加一个元素:void add(int index, E e)
        删除指定索引的元素:int remove(int index)
        删除某个元素:int remove(Object e)
        获取指定索引的元素:E get(int index)
        获取链表大小(包含元素的个数):int size()
      

      但是,实现List接口并非只能通过数组(即ArrayList的实现方式)来实现,另一种LinkedList通过“链表”也实现了List接口。在LinkedList中,它的内部每个元素都指向下一个元素:

    • ArrayList和LinkedList区别

      List接口允许我们添加重复的元素,即List内部的元素可以重复

      创建List
      jdk1.9版本适用

      除了使用ArrayList和LinkedList,我们还可以通过List接口提供的of()方法,根据给定元素快速创建List:

      List list = List.of(1, 2, 5);
      但是List.of()方法不接受null值,如果传入null,会抛出NullPointerException异常。

    • 遍历List

        	 public class Main {
            public static void main(String[] args) {
                List<String> list = List.of("apple", "pear", "banana");
                for (int i=0; i<list.size(); i++) {
                    String s = list.get(i);
                    System.out.println(s);
                }
        	}
        }
      
      • 使用迭代器Iterator来访问List。Iterator本身也是一个对象,但它是由List的实例调用iterator()方法的时候创建的。Iterator对象知道如何遍历一个List,并且不同的List类型,返回的Iterator对象实现也是不同的,但总是具有最高的访问效率。

    Iterator对象有两个方法:boolean hasNext()判断是否有下一个元素,E next()返回下一个元素。Java的for each循环本身就可以帮我们使用Iterator遍历

       List list=new ArrayList();
            list.add("1");
            list.add("2");
            list.add("3");
            list.add("4");
            list.add(4,"5");
           /* list.remove("3");
            list.remove(0);
            list.get(2);*/
    
            //根据List接口提供的of方法快速创建List
            for (Object s :
                    list) {
                System.out.println(s);
            }
    

    list和Array的转换

    1. 调用toArray()方法直接返回一个Object[]数组
    2. 给toArray(T[])传入一个类型相同的Array,List内部自动把元素复制到传入的Array中
    3. 通过List接口定义的T[] toArray(IntFunction<T[]> generator)方法
    博客网站 https://yamon.top 个人网站 https://yamon.top/resume GitHub网站 https://github.com/yamonc 欢迎前来访问
  • 相关阅读:
    给右键 添加dos命令
    js模拟系统无刷新跳回登录页1
    MBProgressHUD.h file not found
    建立个人博客网站
    <转>提高iOS开发效率的方法和工具
    设置模块功能设计思路及代码实现
    经验之谈
    'NSInteger' (aka 'long') to 'int32
    OCR技术
    升级Xcode6.4插件失效解决办法
  • 原文地址:https://www.cnblogs.com/chenyameng/p/11432061.html
Copyright © 2011-2022 走看看