ToB企服应用市场:ToB评测及商务社交产业平台

标题: Java集合(简单介绍) [打印本页]

作者: 锦通    时间: 2022-8-30 01:21
标题: Java集合(简单介绍)
集合


目录

1.集合的作用
  1.                 在java中我们可以使用数组来保存多个对象,但是数组的长度不可变。如果需要保存数量变化的数据,数据就不太合适了。为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。**集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类**
复制代码
2.集合类的分类

​                java集合类型分为Collection和Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类.
下图为collection接口基本结构

下图为Map接口基本结构

Collection

Collection方法分类

1.修改操作
方法名作用add()添加单个数据,结果返回布尔值remove()删除单个数据,结果返回布尔值2.查询操作
方法名作用size()返回此集合中的元素数。isEmpty()如果集合中不包含元素,则返回 true 。contains()如果此集合包含指定的元素,则返回true。iterator()以正确的顺序返回该列表中的元素的迭代器。toArray()正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。toArray(T[])正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。  如果列表适合指定的数组,则返回其中。 否则,将为指定数组的运行时类型和此列表的大小分配一个新数组。3.批量操作
方法名作用containsAll(Collection)如果此集合包含指定 集合中的所有元素,则返回true。addALl(Collection)批量删除removeIF(Predicate)保留删除clear()清空集合stream()返回一个顺序Stream与此集合作为其来源。parallelStream()返回可能并行的Stream与此集合作为其来源。 该方法允许返回顺序流。首先看一下添加操作与批量添加操作

定义一个Fruit类,一个Apple类,以及一个Banana类
  1. public class Fruit {
  2.     private String name;
  3.     public Fruit(String name) {
  4.         this.name = name;
  5.     }
  6.     @Override
  7.     public String toString() {
  8.         return name;
  9.     }
  10. }
复制代码
  1. public class Apple extends Fruit{
  2.     public Apple(String name) {
  3.         super(name);
  4.     }
  5. }
复制代码
  1. public class Banana extends Fruit{
  2.     public Banana(String name) {
  3.         super(name);
  4.     }
  5. }
复制代码
然后在主方法中写一个集合,并向这个集合中国添加数据
  1. public class Demo01 {
  2.     //首先看一下添加操作boolean add(),添加成功返回True,失败返回False
  3.     public static void main(String[] args) {
  4.         List<Fruit> fruits = new ArrayList<>();
  5.         System.out.println(fruits.add(new Apple("红富士苹果")));
  6.         System.out.println(fruits.add(new Apple("青苹果")));
  7.         System.out.println(fruits.add(new Fruit("蛇果")));
  8.         for (Fruit fruit : fruits) {
  9.             System.out.println(fruit);
  10.         }
  11.     }
  12. }
复制代码
输出:
  1. true
  2. true
  3. true
  4. 红富士苹果
  5. 青苹果
  6. 蛇果
复制代码
List fruits = new ArrayList();
因为集合中定义的是Fruit,说明该集合只能存储Fruit对象或者Fruit的子类对象
再看一下addall()方法,添加成功返回true,否则返回false
首先定义两个集合,分别为苹果集合和香蕉集合,并向集合中添加数据
  1. public class Demo01 {
  2.     //首先看一下添加操作boolean add(),添加成功返回True,失败返回False
  3.     public static void main(String[] args) {
  4.         List<Apple> apples = new ArrayList<>();
  5.             apples.add(new Apple("红富士"));
  6.             apples.add(new Apple("青苹果"));
  7.             apples.add(new Apple("蛇果"));
  8.         List<Banana> bananas = new ArrayList<>();
  9.         bananas.add(new Banana("帝皇蕉"));
  10.         apples.add(new Apple("海南香蕉"));
  11.         List<Fruit> fruits = new ArrayList<>();
  12.         System.out.println(fruits.addAll(apples));
  13.         System.out.println(fruits.addAll(bananas));
  14.         for (Fruit fruit : fruits) {
  15.             System.out.println(fruit);
  16.         }
  17.     }
  18.     }
复制代码
集合删除数据

remove()删除单个数据,删除批量数据removeAll,删除符合添加条件的数据,removeIF,删除所有数据clear,即清空数据!
首先先看单个删除操作如何操作的
  1. public class Demo02 {
  2.     public static void main(String[] args) {
  3.         //定义一个数字集合
  4.         List<Integer> numbers = new ArrayList<>();
  5.                 numbers.add(1);
  6.                 numbers.add(2);
  7.                 numbers.add(3);
  8.                 numbers.add(4);
  9.                 numbers.add(5);
  10.         for (Integer number : numbers) {
  11.             System.out.print(number+" ");
  12.         }
  13.         System.out.println();
  14.         System.out.println("====分===割===线=====");
  15.               numbers.remove(2);
  16.               numbers.remove(3);
  17.         for (Integer number : numbers) {
  18.             System.out.print(number+" ");
  19.         }
  20.     }
  21. }
复制代码
输出:
  1. 1 2 3 4 5
  2. ====分===割===线=====
  3. 1 2 4
复制代码
可以看到,删除我们打印输出的是1,2,4,可以看到他是先删除的下标为2的数字,然后,后面的数字往前进一个,集合中现在的长度为4,我们再取下标3的数,也就是最后一个数5,打印剩下的数就是1.2.4.
1.removeAll()方法
删除要删除数据中的集合,只要有符合的就执行删除操作
代码示例:
  1. public class Demo03 {
  2.     public static void main(String[] args) {
  3.         List<Integer> numbers = new ArrayList<>();
  4.         numbers.add(1);
  5.         numbers.add(2);
  6.         numbers.add(3);
  7.         numbers.add(4);
  8.         numbers.add(5);
  9.         List<Integer> num=new ArrayList<>();
  10.         num.add(2);
  11.         num.add(3);
  12.         num.add(5);
  13.         num.add(6);
  14.         numbers.removeAll(num);
  15.         for (Integer number : numbers) {
  16.             System.out.print(number+" ");
  17.         }
  18.     }
  19. }
复制代码
输出:
  1. 1  4
复制代码
2.retainAll()方法,指定要保留的数据集合
  1. public class Demo04 {
  2.     public static void main(String[] args) {
  3.         List<Integer> numbers = new ArrayList<>();
  4.         numbers.add(1);
  5.         numbers.add(2);
  6.         numbers.add(3);
  7.         numbers.add(4);
  8.         numbers.add(5);
  9.         List<Integer> nums = new ArrayList<>();
  10.         nums.add(2);
  11.         nums.add(4);
  12.         nums.add(6);
  13.         numbers.retainAll(nums);
  14.         System.out.println(numbers);
  15.     }
  16. }
复制代码
输出:
  1. [2, 4]
复制代码
可以看到,我们把要保留的数放在第二个集合中,当在需要操作的集合中能找到相应的数据,就将其保留!
3.removeIf()方法
  1. public class Demo05 {
  2.     public static void main(String[] args) {
  3.         List<Integer> numbers = new ArrayList<>();
  4.         numbers.add(1);
  5.         numbers.add(2);
  6.         numbers.add(3);
  7.         numbers.add(4);
  8.         numbers.add(5);
  9.         //指定规则删除集合中的数据
  10.         //Predicate接口主要用来判断一个参数是否符合要求
  11.          boolean result=numbers.removeIf(new Predicate<Integer>() {
  12.             @Override
  13.             public boolean test(Integer integer) {
  14.                 //删除所有偶数
  15.                 return integer%2==0;
  16.             }
  17.         });
  18.          //看是否删除成功
  19.         System.out.println(result);
  20.         //遍历集合
  21.         for (Integer number : numbers) {
  22.             System.out.print(number+" ");
  23.         }
  24.     }
  25. }
复制代码
输出:
  1. true
  2. 1 3 5
复制代码
4.clear()方法,清空集合
  1. public class Demo06 {
  2.     public static void main(String[] args) {
  3.         List<Integer> numbers = new ArrayList<>();
  4.         numbers.add(1);
  5.         numbers.add(2);
  6.         numbers.add(3);
  7.         numbers.add(4);
  8.         numbers.add(5);
  9.         System.out.println(numbers);
  10.         numbers.clear();
  11.         System.out.println(numbers);
  12.     }
  13. }
复制代码
输出:
  1. [1, 2, 3, 4, 5]
  2. []
复制代码
一些常见的其他方法
  1. public class Demo07 {
  2.     public static void main(String[] args) {
  3.         List<Integer> numbers = new ArrayList<>();
  4.         numbers.add(1);
  5.         numbers.add(2);
  6.         numbers.add(3);
  7.         numbers.add(4);
  8.         numbers.add(5);
  9.         //集合的元素数
  10.         System.out.println(numbers.size());
  11.         //集合是否为空
  12.         System.out.println(numbers.isEmpty());
  13.         //集合中是否有元素2
  14.         System.out.println(numbers.contains(2));
  15.     }
  16. }
复制代码
输出:
  1. 5
  2. false
  3. true
复制代码
更多方法,具体的可以查看一下jdk的帮助文档
ArrayList

​                ArrayLisy不但拥有Collection中的方法,还拥有List中的所有方法
特点:
优点:查询快
缺点:增删慢
1.ArrayList中的构造方法
​                ArrayList中有三种构造方法
<ul>public ArrayList()  构造一个初始容量为十的空列表。

public ArrayList(Collection




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4