(通用之学习)类集的那些事儿

关于类集

解释:类集是java对数据结构成熟的实现。

常见的数据结构有:
  • 栈:先进后出
  • 队列:先进先出
  • 数组:易查找,但增删慢
  • 二叉树:一般用于查找(查找快)
  • 链表:增删快,不易查找

关于Collection

Collection是一个接口,但经常使用它的子接口:“List”,“Set”;

List接口

List中的内容是允许重复的。

List接口的实现类包括:ArrayList、LinkedList、Vector(最后一个不常用)

ArrayList类

使用的是数组结构,查找快,增删慢

ArrayList通过无参构造方法构造的集合在开始时长度为0

当第一次存数据时,会对集合进行扩容,默认为10。(注意是使用无参构造器时)

当存满后,集合会扩大到原来的1.5倍。

Vector类

和ArrayList类似,不过它是线程安全的实现,是同步的。

LinkedList类

使用的是双向链表结构,增删快,查找慢

压栈

压栈使用了push()方法。

data.push(1);
data.push(2);

先将整数1压入底部,然后再将整数2压在1的上面。

弹栈

弹栈使用了pop()方法。

Integer i = data.pop();
System.out.println(i);//输出为2

取出栈顶元素,由于2在1的上面(1被2压在下面),所以先取出2。

单向队列

从首部存储,并从尾部取出来。

data.addFirst(1);
data.addFirst(2);
Integer i = data.removeLast();
System.out.println(i);//输出位1
双向队列

可以从头部存储、取出,也可以从尾部存储、取出。

//从头部存,并从头部取出
data.addFirst(1);
data.addFirst(2);
Integer i = data.removeFirst();
System.out.println(i);//输出为2
Iterator迭代器

用于迭代Collection下的集合(List和Set)。

迭代器用一个指针进行操作,先判断下一个是否有内容(一开始是指在0的前面),如果有则继续,并将指针向下移,以此类推。

LinkedList<Integer> data = new LinkedList<>();
data.add(1);
data.add(2);
data.add(3);
Iterator<Integer> i = data.iterator();
while(i.hasNext()){
System.out.print(i.next()+" ");
}//输出 1 2 3
ListIterator迭代器

用于迭代List(ListIterator是Iterator的一个子类)

forEach

用于增强for循环。

语法:

for(数据类型 变量名: 数组名或集合名){}

ArrayList<Integer> data = new ArrayList<>();
data.add(1);
data.add(1);
data.add(2);
data.add(2);
for (Integer i:data) {
System.out.print(i+" ");
}//输出 1 1 2 2
Set接口

Set中的内容是不允许重复的。

HashSet类

HashSet是散列存放的,不允许重复且顺序由哈希表决定,并不是自然顺序存放的。

HashSet<String> set = new HashSet<>();
set.add("锄禾日当午");
set.add("汗滴禾下土");
set.add("谁知盘中餐");
set.add("粒粒皆辛苦");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//输出内容为下:
汗滴禾下土
谁知盘中餐
锄禾日当午
粒粒皆辛苦

TreeSet类

TreeSet基于TreeMap。它的顺序是按二叉树的结构存放的。

TreeSet<String> data = new TreeSet<>();
data.add("b");
data.add("a");
data.add("d");
data.add("c");
for (String s:data
) {
System.out.print(s+" ");
}//输出 a b c d

关于Map集合

Map集合存储的是一个个的“键值对”数据。

Map集合的键(key)不可重复。

大多数Set集合的内部都使用了Map集合。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值