Java集合框架

什么是集合

集合与数组一样,可以保存一组元素,并且提供了操作元素的相关方法,使用更方便.

java集合框架中相关接口

java.util.Collection接口:

java.util.Collection是所有集合的顶级接口.Collection下面有多种实现类,因此我们有更多的数据结构可供选择.

Collection下面有两个常见的子接口:

  • java.util.List:线性表.是可重复集合,并且有序.
  • java.util.Set:不可重复的集合,大部分实现类是无序的.

这里可重复指的是集合中的元素是否可以重复,而判定重复元素的标准是依靠元素自身equals比较

的结果.为true就认为是重复元素.

 

常用方法:

boolean add(E e):向集合中添加一个元素,成功添加则返回true

int size():返回当前集合的元素个数

boolean isEmpty():判断当前集合是否为空集.当且仅当size=0时返回true.

void clear():清空集合

import java.util.ArrayList;
import java.util.Collection;
​
public class CollectionDemo {
   public static void main(String[] args) {
       Collection c = new ArrayList();
       /*
           boolean add(E e)
           向当前集合中添加一个元素.当元素成功添加后返回true
        */
       c.add("one");
       c.add("two");
       c.add("three");
       c.add("four");
       c.add("five");
       System.out.println(c);
       /*
           int size()
           返回当前集合的元素个数
        */
       int size = c.size();
       System.out.println("size:"+size);
       /*
           boolean isEmpty()
           判断当前集合是否为空集(不含有任何元素)
        */
       boolean isEmpty = c.isEmpty();
       System.out.println("是否为空集:"+isEmpty);
       /*
          清空集合
        */
       c.clear();
       System.out.println(c);
       System.out.println("size:"+c.size());//0
       System.out.println("是否为空集:"+c.isEmpty());
​
​
   }
}

boolean contains(Object o):判断集合是否包含给定元素

boolean remove(Object o):从集合中删除给定元素,成功删除返回true.

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
​
public class CollectionDemo2 {
   public static void main(String[] args) {
//        Collection c = new ArrayList();
       Collection c = new HashSet();
       c.add(new Point(1,2));
       c.add(new Point(3,4));
       c.add(new Point(5,6));
       c.add(new Point(7,8));
       c.add(new Point(1,2));
       /*
           集合重写了Object的toString方法,输出的格式为:
           [元素1.toString(), 元素2.toString(), ....]
        */
       System.out.println(c);
​
       Point p = new Point(1,2);
       /*
           boolean contains(Object o)
           判断当前集合是否包含给定元素,这里判断的依据是给定元素是否与集合
           现有元素存在equals比较为true的情况。
        */
       boolean contains = c.contains(p);
       System.out.println("包含:"+contains);
       /*
           remove用来从集合中删除给定元素,删除的也是与集合中equals比较
           为true的元素。注意,对于可以存放重复元素的集合而言,只删除一次。
        */
       c.remove(p);
       System.out.println(c);
   }
}

boolean addAll(Collection c):将给定集合所有元素添加到当前集合中。

boolean removeAll(Collection c):删除当前集合中与给定集合的公有元素。

boolean containsAll(Collection c):判断当前集合是否包含给定集合中的所有元素。

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
​
/**
* 集合间的操作
*/
public class CollectionDemo4 {
   public static void main(String[] args) {
//        Collection c1 = new ArrayList();
       Collection c1 = new HashSet();//不可重复元素
       c1.add("java");
       c1.add("c");
       c1.add("c++");
       System.out.println("c1:"+c1);
       Collection c2 = new ArrayList();
       c2.add("android");
       c2.add("ios");
       c2.add("java");
       System.out.println("c2:"+c2);
        /*
           boolean addAll(Collection c)
           将给定集合中的所有元素添加到当前集合中。当前集合若发生了改变则返回true
        */
       boolean tf = c1.addAll(c2);
       System.out.println(tf);
       System.out.println("c1:"+c1);
       System.out.println("c2:"+c2);
​
       Collection c3 = new ArrayList();
       c3.add("ios");
       c3.add("c++");
       c3.add("php");
       System.out.println("c3:"+c3);
       /*
           boolean containsAll(Collection c)
           判断当前集合是否包含给定集合中的所有元素
        */
       boolean contains = c1.containsAll(c3);
       System.out.println("包含所有元素:"+contains);
​
       /*
           boolean removeAll(Collection c)
           删除当前集合中与给定集合中的共有元素
        */
       c1.removeAll(c3);
       System.out.println("c1:"+c1);
       System.out.println("c3:"+c3);
   }
}

Iterator iterator():获取用于遍历当前集合的迭代器

T[] toArray(T[] t):将当前集合转换为一个数组。参数为要转换的数组。

 

迭代器

java.util.Iterator

迭代器用于遍历集合,不同的集合都提供了一个用于遍历自身元素的迭代器实现类。

使用迭代器遍历集合遵循的过程为:问->取->删。其中删除不是必要操作。

常用方法

boolean hasNext():判断集合是否还有"下一个"元素可以遍历

E next():获取集合下一个元素

void remove():从集合中删除迭代器当前位置的元素(通过next获取的元素)

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

public class IteratorDemo {
   public static void main(String[] args) {
       Collection c = new ArrayList();
       c.add("one");
       c.add("two");
       c.add("three");
       c.add("four");
       c.add("five");
       System.out.println(c);
       //获取迭代器
       Iterator it = c.iterator();
       /*
           迭代器提供的相关方法:
           boolean hasNext()
           判断集合是否还有元素可以遍历
​
           E next()
           获取集合下一个元素(第一次调用时就是获取第一个元素,以此类推)
        */
       while(it.hasNext()){
           String str = (String)it.next();
           System.out.println(str);         
       }
       System.out.println(c);
​
   }
}

 

集合转换为数组的操作

集合转换为数组,使用集合的toArray方法即可。 数组转换为集合,只能转换为List集合,使用的是Arrays.asList()方法。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
​
/**
* 集合转换为数组
* Collection提供了方法toArray可以将当前集合转换为一个数组
*/
public class CollectionToArrayDemo {
   public static void main(String[] args) {
       List<String> list = new ArrayList<>();
       list.add("one");
       list.add("two");
       list.add("three");
       list.add("four");
       list.add("five");
       System.out.println(list);
​
       String[] array = list.toArray(new String[list.size()]);
       System.out.println(array.length);
       System.out.println(Arrays.toString(array));
   }
}

 

import java.util.*;
​
/**
* 数组转换为集合
* 数组的工具类java.util.Arrays提供了一个静态方法:asList
* 该方法可以将一个数组转换为一个List集合
*/
public class ArrayToListDemo {
   public static void main(String[] args) {
       String[] array = {"one","two","three","four","five"};
       System.out.println("array:"+ Arrays.toString(array));
​
       //asList方法会返回Arrays定义的内部类ArrayList,该集合内部直接引用给定数组array
       List<String> list = Arrays.asList(array);
       System.out.println("list:"+list);
       //因为集合直接引用数组array,所以对该集合操作就是对array数组的操作
       list.set(1,"six");
       System.out.println("list:"+list);
       System.out.println("array:"+ Arrays.toString(array));
       //对数组操作后,集合也会改到改变.
       array[2] = "seven";
       System.out.println("array:"+ Arrays.toString(array));
       System.out.println("list:"+list);
//        list.add("!!!!!");
​
       /*
           如果我们需要增删元素,可另行创建一个集合同时包含该集合元素即可.
        */
       List<String> list2 = new ArrayList<>(list);//等同于先new再addAll()
//        Set<String> set = new HashSet<>(list);//等同于先new再addAll()
​
       System.out.println("list2:"+list2);
       list2.add("!!!!");
       System.out.println("list2:"+list2);
​
​
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值