栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java集合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java集合

目录

一、List

(1)ArrayList

(2)Vector

(3)LinkedList

主要方法:

(1) add()

(2)set()

(3)remove()

(4)get()

(5)int size()

(6)of()

(7)List 和Array互换

二、Map

主要方法:

(1)put() 

(2)获取功能

(3)遍历功能

三、Set

(1)HashSet

(2)LinkedHashSet

(3)TreeSet

主要方法

(1)add()

(2)remove()

(3)contains()


一、List

List接口继承了Collection接口以定义一个允许重复项的有序集合。

  • 允许插入重复的元素
  • 允许添加null

以下是接口的三种分类:

(1)ArrayList
  • 优点: 底层数据结构是数组,查询快,增删慢。
  • 缺点: 线程不安全,效率高

(2)Vector
  • 优点: 底层数据结构是数组,查询快,增删慢。
  • 缺点: 线程安全,效率低

(3)LinkedList
  • 优点: 底层数据结构是链表,查询慢,增删快。
  • 缺点: 线程不安全,效率高
     

主要方法:

(1) add()

       在指定索引添加元素

  List list= new ArrayList();
        list.add("hi");
        System.out.println(list);
  

(2)set()

提供下标和内容,修改对应位置的数据

  List list= new ArrayList();
        list.add("hi");
        list.set(0,"hello");
        System.out.println(list);

(3)remove()

   删除指定元素

  List list= new ArrayList();
        list.add("hi");
        list.set(0,"hello");
        list.add(1,"text");//再添加一个元素 
        list.remove(0); //删除第一个元素,或写为list.remove("hello");
        System.out.println(list);
 

(4)get()

获取指定索引的元素

 List list= new ArrayList();
        list.add("hi");
        list.add(1,"text");
        list.add("hello");
        System.out.println(list.get(2)+"");

(5)int size()

 获取链表大小(包含元素的个数)

   List list= new ArrayList();
        list.add("hi");
        list.add(1,"text");
        list.add("hello");
        System.out.println(list.size()+"");

(6)of()

          可以用创建List,但是不接受null值

List list = List.of(1, 2, 5);

Iterator本身也是一个对象,但它是由List的实例调用iterator()方法的时候创建的。

Iterator对象有两个方法:boolean hasNext()判断是否有下一个元素,E next()返回下一个元素。因此,使用Iterator遍历List代码如下:

List list = List.of("apple", "pear","banana"); 
for (Iterator it =list.iterator(); it.hasNext();)
{
    String s = it.next();
    System.out.println(s);
}

 由于Iterator遍历是如此常用,所以,Java的for each循环本身就可以帮我们使用Iterator遍历。把上面的代码再改写如下:

List list = List.of("apple", "pear", "banana");
for (String s:list)
{
System.out.println(s);
}

(7)List 和Array互换

    List 变成Array:

     (1)给toArray(T[])传入一个类型相同的Array,List内部自动把元素复制到传入的Array中

List list =List.of(12, 34, 56);
Integer[] array =list.toArray(new Integer[3]);
for (Integer n:array) {}
System.out.println(n);
}

如果我们传入类型不匹配的数组,例如,String[]类型的数组,由于List的元素是Integer,所以无法放入String数组,这个方法会抛出ArrayStoreExceptio。
   (2)通过List接口定义的T[] toArray(IntFunction generator)方法

Integer[] array = list.toArray(Integer[]::new);

 Array变成List:

              通过List.of(T…)方法最简单

Integer[] array = { 1, 2, 3 };
List list = List.of(array);

二、Map

Map集合没有继承Collection接口,其提供的是键到值的映射。Map不能包含相同的键,每个键只能映射一个值。键还决定了储存对象在映射中的储存位置。

  •  LinkedHashMap集合用法跟HashMap基本一致,它是基于链表和哈希表结构的所以具有存取有序,键不重复的特性,存的顺序和遍历出来的顺序是一致的。
  • TreeMap与TreeSet类似,都需要重写比较器(外部比较器+内部比较器)。TreeMap集合特点:单一,有序
主要方法:

(1)put() 
  • 调用put(K key, V value)方法时,就把key和value做了映射并放入Map。
   Map map = new HashMap<>();
        map.put("hi", 123);
        System.out.println(map);

(2)获取功能
  • 获取value
 Map map = new HashMap<>();
        map.put("hi", "123");
        //Collection values()
        Collection values=map.values();
        for(String value: values) {
            System.out.println(value);
      
  •   获取key
Map map = new HashMap<>();
        map.put("hi", "123");
        //Set keySet()
        Set keys = map.keySet();
        for(String key: keys) {
            System.out.println(key);
                    
        }

(3)遍历功能
  •   调用V get(K key)时,就可以通过key获取到对应的value
Map map = new HashMap<>();
        map.put("hi", 123);
        Setkeys=map.keySet();
        for(String key:keys) {
             
            String value = map.get(key);
            System.out.println(key+"="+value);
        }
  •  通过(entry)中间人Set> entrySet() 来寻找Key和Value
  Map map = new HashMap<>();
        map.put("hi", "123");
        //获取所有中间人entrys
        Set> entrys =map.entrySet();
        //遍历所有entrys用Map.Entry类型的entry接收
        for(Map.Entry entry:entrys) {
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key+"= "+value);
}

三、Set
  • Set集合中的对象不按特定的方式排序,只是简单的将对象加入到集合中,但是Set集合不能包括重复对象
  • Set接口继承了Collection接口,因此也包含Collection接口的所有方法
  • Set实际上相当于只存储key、不存储value的Map。我们经常用Set用于去除重复元素

(1)HashSet
  •  不允许重复,无序

(2)LinkedHashSet
  • 继承自HashSet,特点是:有序,唯一,效率高

(3)TreeSet
  • 为使用树来进行储存的Set接口提供了一个工具,对象按升序储存,访问和检索是很快的。在存储了大量的需要进行快速检索的排序信息的情况下。

主要方法

(1)add()

      添加元素

Setset=new HashSet<>();
       set.add("hi");
       System.out.println(set);

(2)remove()

        删除元素

 Setset=new HashSet<>();
       set.add("hi");
       set.add("hello");
       set.remove("hi");
       System.out.println(set);

(3)contains()

   判断是否包含某个元素

 Setset=new HashSet<>();
       set.add("hello");
       System.out.println(set.contains("hi"));
  • HashSet是无序的,因为它实现了Set接口,并没有实现SortedSet接口;
  • TreeSet是有序的,因为它实现了SortedSet接口。这个顺序是元素的排序顺序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/999009.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号