集合(Java)
Posted Michelhjx
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合(Java)相关的知识,希望对你有一定的参考价值。
一、概述
Hello,各位观众老爷,时隔一周小的继续来跟大家分享学习Java知识了。在之前我们一起了解过了集合中的一种ArrayList,没有看过的观众老爷请点击链接先了解一下浅谈集合之ArrayList_Michelhjx的博客-CSDN博客
现在我们稍微回顾一下集合类的特点 :
提供一种存储空间可变的存储模型,存储的数据容量可以随时发生改变。
这里我们先来看一下集合的体系结构,了解一下集合需要学习哪些东西:
接下来我们开始逐步学习集合。
二、Collection
2.1概述
- 是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素
- JDK 不提供此接口的任何直接实现,它提供更具体的子接口(如Set和List)实现
创建Collection集合的对象:
多态的方式
具体的实现类ArrayList
2.2Collection 集合常用方法
具体使用我们有代码演示一下:
public class Test {
public static void main(String[] args) {
Collection collection = new ArrayList();
//添加元素
collection.add(1);
collection.add(2);
collection.add(3);
System.out.println(collection);
//删除指定元素
collection.remove(3);
//判断集合中是否存在指定的元素
collection.contains(4);
//判断集合是否为空
System.out.println(collection.isEmpty());
//集合的长度,也就是集合中元素的个数
System.out.println(collection.size());
//清空集合中的元素
collection.clear();
System.out.println(collection.isEmpty());//用判定是否为空来检验是否清空集合
}
}
我们在控制台输出打印:
这里我们可以看到,在使用了clear()方法后,我们再次判断集合是否为空的时候,这里打印的值是true,因此我们可以检验出clear()方法确实已经清空了集合。
2.3 Iterator迭代器
什么是迭代器? 这是集合的一种专有的遍历方式。
常用方法:
具体使用我们用代码演示一下:
public class Test {
public static void main(String[] args) {
Collection collection = new ArrayList();
collection.add(1);
collection.add(2);
collection.add(3);
Iterator iterator = collection.iterator();
while (iterator.hasNext()){
System.out.println( iterator.next());
}
}
}
控制台输出打印:
2.4List
概述:有序集合(也称为序列),用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引访问元素,并搜索列表中的元素,可以存入重复的元素。
特点:
- 有序:存储和取出的元素顺序一致
-
可重复:存储的元素可以重复
常用方法:
具体使用我们用代码演示一下:
public class Test1 {
public static void main(String[] args) {
List list = new ArrayList();
//循环添加元素
for (int i = 1; i <5 ; i++) {
list.add(i);
}
//往指定位置添加元素
list.add(2,6);
//删除指定索引值的元素
list.remove(2);
//修改指定索引值的元素
list.set(2,6);
//获得指定索引值的元素
System.out.println(list.get(2));
System.out.println("------");
//遍历集合
for (int i = 0; i <list.size() ; i++) {
System.out.println(list.get(i));
}
}
}
控制台输出;
ListIterator列表迭代器(List专用)
常用方法:
具体使用我们用代码演示一下:
public class Test1 {
public static void main(String[] args) {
List list = new ArrayList();
//循环添加元素
for (int i = 0; i <5 ; i++) {
list.add(i);
}
ListIterator listIterator = list.listIterator();
while (listIterator.hasNext()){
//正序遍历
System.out.println(listIterator.next());
}
System.out.println("----------------");
while (listIterator.hasPrevious()){
System.out.println(listIterator.previous());
}
}
}
运行结果:
List集合常用实现类:
ArrayList:
ArrayList: 底层是数组,查询快,增删慢
LinkedList
LinkedList: 底层是链表,查询慢,增删快
2.5 Set
集合特点:
不包含重复的元素
没有带索引的方法,所以不能使用普通for循环遍历
哈希值概念:
是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值
实现类
1.HashSet
特点:
2. TreeSet
特点:
TreeSet排序:
public class Test2 {
public static void main(String[] args) {
TreeSet<Integer> treeSet = new TreeSet<Integer>();
//自然排序
treeSet.add(6);
treeSet.add(5);
treeSet.add(7);
treeSet.add(3);
treeSet.add(1);
for (Integer integer : treeSet) {
System.out.println(integer+" ");
}
System.out.println("-----------");
//比较器排序
TreeSet<Integer> treeSet1 = new TreeSet<>(new Comparator<Integer>() {
@Override
public int compare(Integer i1, Integer i2) {
int num = i1-i2;
return num;
}
});
treeSet1.add(6);
treeSet1.add(5);
treeSet1.add(7);
treeSet1.add(3);
treeSet1.add(1);
for (Integer integer : treeSet1) {
System.out.println(integer);
}
}
}
运行结果:
三、Map
3.1 定义
map集合中元素是成对存在的。每个元素由键和值组成。可以通过键找到值,但是键具有唯一性。
3.2常用方法
3.3 Map集合遍历
直接上案例!
public class Test3 {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<Integer, String>();
map.put(1,"张三");
map.put(2,"李四");
map.put(3,"王五");
map.put(4,"赵六");
//方法一
//1、通过keySet()方法返回一个键的集合
//2、遍历这个集合,依次用get()方法获取值
Set<Integer> integers = map.keySet();
for (Integer integer : integers) {
System.out.println(integer+" "+map.get(integer));
}
System.out.println("-----------------");
//方法二
//1、通过entrySet()方法获取一个键值对对象
//2、用getKey()和geyValue()方法分别获取值和键
Set<Map.Entry<Integer, String>> entries = map.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
运行结果:
四、Collections工具类
概述:
常用方法:
好了,各位观众老爷,今天的分享学习就结束了!ByeBye~
以上是关于集合(Java)的主要内容,如果未能解决你的问题,请参考以下文章