Java中的集合-Collection

1、Collection接口常用方法:

  • boolean add(E e):在list末尾添加元素
  • boolean addAll(Collection<?> c):在指定集合末尾添加另一个同类型集合,若指定集合元素改变返回true
  • boolean remove(Object o):从集合中移除指定元素,若元素有多个,则只删除第一个
  • void clear():清空集合中的元素
  • boolean contains(Object o):判断集合中是否包含指定元素
  • boolean containsAll(Collection<?> c):判断指定集合是否包含集合c中的所有元素
  • boolean isEmpty():判断集合是否为空
  • int size():返回集合的长度,即集合中元素的个数
  • T[] toArray(T[] a):将集合转换为T类型的数组
Collection<String> list1 = new ArrayList<>();
list1.add("我");
list1.add("最");
list1.add("爱");
list1.add("吃");

System.out.println(list1); //输出:[我, 最, 爱, 吃]


Collection<String> list2 = new ArrayList<>();
list2.add("涮羊肉");
list1.addAll(list2);
System.out.println(list1);  //输出:[我, 最, 爱, 吃, 涮羊肉]

System.out.println(list1.isEmpty()); //输出:false
System.out.println(list1.size()); //输出:5

list1.remove(1);
System.out.println(list1);  //输出:[我, 爱, 吃, 涮羊肉]


System.out.println(list1.contains("涮羊肉"));  //输出:true

// 创建一个新的 String 类型的数组,数组长度和 list1 长度一样
String[] arr = new String[list1.size()];        
list1.toArray(arr);// 将ArrayList对象转换成数组
for(String a:arr){
    System.out.println(a);
}

list1.clear();
System.out.println(list1);  //输出:[]

迭代器遍历集合

Collection<String> list1 = new ArrayList<>();
list1.add("我");
list1.add("爱");
list1.add("吃");
list1.add("刷羊肉");
System.out.println(list1); //输出:[我, 爱, 吃, 涮羊肉]

Iterator<String> it = list1.iterator();//通过集合对象获取迭代器对象
while(it.hasNext()){ //通过迭代器对象的hasnext()方法判断是否还有元素
    String str = it.next();
    System.out.println(str); //用迭代器遍历输出
}

1.1、List集合

 list是有顺序的所以它的值是可以重复的

List 特有的方法

  • void add(int index,E e):在index位置添加元素,如果index没有则在末尾添加
  • boolean addAll(int index,Collection<?> c):在index位置添加另一个同类型集合,如果index没有则在末尾添加
  • E remove(int index):删除指定索引处的元素,返回被删除的元素
  • E set(int index, E e):修改指定索引处的元素,返回被修改的元素
  • E get(int index):获取指定索引处的元素
List<String> list1 = new ArrayList<>();
list1.add("我");
list1.add("最");
list1.add("爱");
list1.add("吃");
list1.add("刷羊肉");
System.out.println(list1); //输出:[我, 最, 爱, 吃, 涮羊肉]

String s = list1.set(1, "不");
System.out.println(list1);
System.out.println(s); //输出“最”
String s1 = list1.remove(1);
System.out.println(s1); //输出“不”
String s2 = list1.get(list1.size() - 1);
System.out.println(s2);  //输出“涮羊肉”

List的实现类:

(1)ArrayList:底层数据结构是数组,查询快,增删慢,线程不安全,效率高,可以存储重复元素

(2)LinkedList 底层数据结构是链表,查询慢,增删快,线程不安全,效率高,可以存储重复元素

(3)Vector:底层数据结构是数组,查询快,增删慢,线程安全,效率低,可以存储重复元素

LinkedList集合特有方法

  • public void addFirst(E e):在列表开头插入指定元素
  • public void addLast(E e):在列表结尾添加指定元素
  • public E getFirst():返回列表第一个元素
  • public E getLast():返回列表最后一个元素
  • public E removeFirst():删除列表中第一个元素
  • public E removeLast():删除列表中最后一个元素

1.2、Set集合

Set是无序且不包含重复元素

Set集合中没有特有的方法,只继承使用Collection集合中的方法。

Set的实现类:

(1)HashSet底层数据结构采用哈希表实现,元素无序且唯一,线程不安全,效率高,可以存储null元素,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,如果没有重写这两个方法,则无法保证元素的唯一性;

(2)LinkedHashSet底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高;

(3)TreeSet底层数据结构采用二叉树来实现,元素唯一且已经排好序;唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值