Java中的集合-Collection

Java中的集合-Collection,第1张

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 list1 = new ArrayList<>();
list1.add("我");
list1.add("最");
list1.add("爱");
list1.add("吃");

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


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

Iterator 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 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()方法,二叉树结构保证了元素的有序性。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/797341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)

保存