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

集合Collection

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

集合Collection

目录

1️⃣数组和集合的区别❓

2️⃣集合的体系特点

①集合的体系结构️️️️️️️️️

3️⃣集合常用API

4️⃣集合的遍历方式

①迭代器

 ②增强for循环

③lanbda表达式

 5️⃣Collection存储自定义类型对象

6️⃣List系类集合

①✨✨List集合特有的方法:

②List遍历方式小结

③LinkedList的特点

 7️⃣泛型深入

Ⅰ自定义泛型类 :修饰符 class 类名 <泛型变量> {}

​编辑

Ⅱ自定义泛型方法

 Ⅲ自定义泛型接口


1️⃣数组和集合的区别❓

⬛存储元素个数问题:

数组定义后类型固定,长度固定

集合类型可以不固定,大小可变

⬛数组和集合存储元素类型的问题:

数组可以存储基本类型和引用类型

集合只能存储引用类型

2️⃣集合的体系特点

 

①集合的体系结构️️️️️️️️️

 

package com.study.d1_collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;


public class CollectionDemo {
    public static void main(String[] args) {
        //有序 可重复 有索引
        Collection list = new ArrayList();
        list.add("java");
        list.add("java");
        list.add("哇哈哈");
        list.add(11);
        list.add(false);
        System.out.println(list);

        //无序 不重复 无索引
        Collection list1 = new HashSet();
        list1.add("java");
        list1.add("java");
        list1.add("哇哈哈");
        list1.add(11);
        list1.add(false);
        System.out.println(list1);

        System.out.println("-------------------");
        Collection list2 = new ArrayList<>();
        Collection list3 = new ArrayList<>();
        list2.add("heheh");
        list3.add(11);



    }
}

注意:集合支持泛型

                                Collection list = new ArrayList<>();

3️⃣集合常用API

 

package com.study.d2_collection_api;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Objects;

public class CollectionApi {
    public static void main(String[] args) {
        Collection list = new ArrayList();
//        public boolean add(E e) 把给定的对象添加到当前集合中
        list.add("java");
        list.add("java");
        list.add("html");
        list.add("呵呵");
        System.out.println(list);
//        public void clear() 清空集合中所有的元素

        //list.clear();
//        public boolean remove(E e) 把给定的对象在当前集合中删除
        System.out.println(list.remove("java"));
//        public boolean contains(Object obj) 判断当前集合中是否包含给定的对象
        System.out.println(list.contains("java"));
//        public boolean isEmpty() 判断当前集合是否为空
        System.out.println(list.isEmpty());
//        public int size() 返回集合中元素的个数。
        System.out.println(list.size());
//        public Object[] toArray() 把集合中的元素,存储到数组中
        Object[] arrs = list.toArray();
        System.out.println(Arrays.toString(arrs));


         System.out.println("-------------");
        Collection a1 = new ArrayList<>();
        Collection a2 = new ArrayList<>();
        a1.add("java1");
        a1.add("java2");
        a2.add("哇哈哈");
        a2.add("哇哈哈haha");
        a1.addAll(a2);
        System.out.println(a1);
        System.out.println(a2);

    }
}

4️⃣集合的遍历方式

①迭代器

 

package com.study.d3_collection_bianli;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class CollectionDemo1 {
    public static void main(String[] args) {
        Collection list = new ArrayList<>();
        list.add("可乐");
        list.add("雪碧");
        list.add("七喜");
        list.add("芬达");
        System.out.println(list);
        //得到当前集合的迭代器对象
        Iterator it = list.iterator();
//        System.out.println(it.next()); // 先取元素 再向后移动
//        System.out.println(it.next()); // 先取元素 再向后移动
//        System.out.println(it.next()); // 先取元素 再向后移动
//        System.out.println(it.next()); // 先取元素 再向后移动
        //利用while循环
        while (it.hasNext()){   //hasNext判断当前位置是否有元素
            System.out.println(it.next());
        }
    }
}

 ②增强for循环

 

package com.study.d3_collection_bianli;

import java.util.ArrayList;
import java.util.Collection;

public class Collectionfor {
    public static void main(String[] args) {
        Collection list = new ArrayList<>();
        list.add("可乐");
        list.add("雪碧");
        list.add("七喜");
        list.add("芬达");
        System.out.println(list);
        for (String s : list) {   //list.for   回车
            System.out.println(s);
        }
    }
}

③lanbda表达式
package com.study.d3_collection_bianli;

import java.util.ArrayList;
import java.util.Collection;
import java.util.function.Consumer;

public class Collectionlambda {
    public static void main(String[] args) {
        Collection list = new ArrayList<>();
        list.add("可乐");
        list.add("雪碧");
        list.add("七喜");
        list.add("芬达");
        System.out.println(list);

//        list.forEach(new Consumer() {
//            @Override
//            public void accept(String s) {
//                System.out.println(s);
//            }
//        });

//        list.forEach(s-> {
//                System.out.println(s);
//        });

        list.forEach(s-> System.out.println(s));
    }
}

 5️⃣Collection存储自定义类型对象
Collection movies = new ArrayList<>();
        movies.add(new Movie("《你好李焕英》",9.6,"贾玲"));
        movies.add(new Movie("《我和我我的祖国》",9.8,"武警"));
        movies.add(new Movie("《你好李焕英2》",9.0,"张三"));
        for (Movie movie : movies) {
            System.out.println("片名"+ movie.getName());
            System.out.println("得分"+ movie.getScore());
            System.out.println("主演"+ movie.getActor());

        }

定义一个movie类

package com.study.d4_collection_object;

public class Movie {
    private String name;
    private double score;
    private String actor;

    public Movie() {
    }

    public Movie(String name, double score, String actor) {
        this.name = name;
        this.score = score;
        this.actor = actor;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getScore() {
        return score;
    }

    public void setScore(double score) {
        this.score = score;
    }

    public String getActor() {
        return actor;
    }

    public void setActor(String actor) {
        this.actor = actor;
    }

    @Override
    public String toString() {
        return "Movie{" +
                "name='" + name + ''' +
                ", score=" + score +
                ", actor='" + actor + ''' +
                '}';
    }
}

6️⃣List系类集合

①✨✨List集合特有的方法:

 

package com.study.d5_collection_list;

import java.util.ArrayList;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("java");
        list.add("java");
        list.add("mysql");
        list.add("mysql");
    //在某个位置利用索引添加元素
        list.add(2,"html");
        System.out.println(list);
        System.out.println("-----------");
        //根据索引删除元素
        System.out.println(list.remove(0)); //返回被删除元素
        System.out.println(list);
        System.out.println("-------------");
        //根据索引取元素
        System.out.println(list.get(2));

        //修改碎银出的元素值
        System.out.println(list.set(0, "哇哈哈"));  //返回修改前的数据



    }
}

②List遍历方式小结

迭代器,增强for循环,lambda表达式,for循环(List集合存在索引)

package com.study.d6_colllection_update_delete;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List list = new ArrayList<>();
        list.add("哇哈哈");
        list.add("java");
        list.add("java");
        list.add("张三");
        list.add("张三");
        list.add("里斯");
        System.out.println(list);
        //[哇哈哈, java, java, 张三, 张三, 里斯]
        //删除所有的Java

        //利用迭代器
//      Iterator it =  list.iterator();
//        while (it.hasNext()){
//            String ele = it.next();
//            if ("java".equals(ele)){
//                it.remove();  //利用迭代器删除当前元素并且不会后移
//            }
//        }
//        System.out.println(list);
//
        //利用for增强   无法解决
//        for (String s : list) {
//            if ("java".equals(s)){
//                list.remove("java");
//            }
//        }


        //lambda表达式   也不可以
//        list.forEach(s -> {
//            if ("java".equals(s)){
//               list.remove("java");
//           }
//        });
        
        
        //for循环不出Bug  但是会漏删除
//        for (int i = 0; i < list.size(); i++) {
//            String ele = list.get(i);
//            if ("java".equals(ele)){
//                list.remove("java");
        //        i--;
//            }
//        }
//        System.out.println(list);

        //for循环倒着删除
        for (int i = list.size() - 1; i > 0; i--) {
          String ele = list.get(i);
          if ("java".equals(ele)){
              list.remove("java");
          }
        }
        System.out.println(list);


    }
}

③LinkedList的特点

底层数据结构是双链表,查询慢,但是首尾的操作速度是非常快的

 7️⃣泛型深入

Ⅰ自定义泛型类 :修饰符 class 类名 <泛型变量> {}

                                public class MyArrayList {}

 注意:变量可以为T E K V D等

public class MyArrayList {
    public void add(E e){

    }

Ⅱ自定义泛型方法

package com.study.d8_fanxing_method;

public class FanxingDemo {
    public static void main(String[] args) {
        String[] names = {"小明","小路","小河"};
         printArray(names);
        Integer[] ages = {10,20,30};
        printArray(ages);
        Integer[] ages2 = getArr(ages);


    }

    //泛型方法
    public static  T[] getArr(T[] arr){
        return arr;
    }


    public static  void printArray(T[] arr){
        if ( arr != null){
            StringBuilder sb = new StringBuilder("[");  //拼接
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]).append(i == arr.length - 1? "":",");
            }
            sb.append("]");  //append添加元素
            System.out.println(sb);
        }else {
            System.out.println(arr);
        }
    }
}

 Ⅲ自定义泛型接口

 

 

 

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

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

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