Collection集合

Collection集合

一、List子类

List 有序,可重复;新增了一些根据索引操作的方法

遍历方式:

for-each循环遍历

普通for循环遍历

迭代器遍历

1.常用方法

创建集合

泛型: 增强程序的稳定性与可读性;强制检测数据的类型

使用: 在类型的后面添加<类型>

//规定当前集合对象中存储的所有数据的类型为String
List<String> list = new ArrayList<>();
添加数据
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
在指定索引位置添加数据

add(int index,E e);

list.add(2,"田七");
用指定的元素替换此列表中指定位置的元素(可选操作)

E set(int index, E element)

 System.out.println(list.set(2,"田七星"));		
返回此列表中指定位置的元素

E get(int index)

list.get(0);

2.循环遍历

定义一个集合,存储你喜欢的漫威英雄人物,如果存在灭霸,添加一个惊奇队长

创建一个集合,并添加数据

List<String> list = new ArrayList<>();
list.add("美国队长");
list.add("钢铁侠");
list.add("浩克");
list.add("灭霸");
list.add("蜘蛛侠");
1)使用普通for循环遍历
if(list.contains("灭霸")){
    list.add("惊奇队长");
}
System.out.println(list);
2)迭代器

ListIterator<E> listIterator()

//1)获取列表迭代器对象
  ListIterator<String> it2 =  list.listIterator();
  //2)判断是否存在下一个或者上一个元素
  while(it2.hasNext()){
  if("灭霸".equals(it2.next())){
  it2.add("惊奇队长");
     }
  }
//System.out.println(list);
3)for-each
List<String> list02 = new ArrayList<>();
for (String str: list01) {
    if ("灭霸".equals(str)) {
        list02.add("惊奇队长");
    }
}

二、ArrayList

ArrayList 是List接口的实现类

特点: 有序 可重复

ArrayList :
底层结构: 可变数组
优点: 根据索引查询效率高,访问速度快
缺点: 增删涉及到数组的拷贝问题等效率较低
应用场景: 大量做查询,少量做增删的情况下适合使用ArrayList存储数据
扩容: 初始容量为10,扩容机制->int newCapacity = oldCapacity + (oldCapacity >> 1); 每次扩容原容量的1.5倍,利用Arrays.copyOf实现扩容
新增方法: void forEach(Consumer<? super E> action) 对 Iterable每个元素执行给定操作,直到处理 Iterable所有元素或操作引发异常

遍历:

//foreach
list.forEach(System.out::println);

三、LinkedList

LinkedList是List接口的实现类

特点: 有序 可重复

底层结构: 双向链表
优点 : 做查询效率较低
缺点 : 做增删效率较高
应用场景 : 大量做增删少量做查询推荐使用LinkedList
新增功能 : 新增了一些可以操作链表头尾的方法

在集合首尾添加数据

list.addFirst("111");
list.addLast("555");

四、Set

Collection另一个子类接口

特点:无序 不可重复|去重

​ 无序:存放的顺序与内部真实存储的顺序不一致(内部与自己存储的规则)

​ 去重|不可重复:两个数据调用equals方法返回值true,相同需要去重,false不同可以添加

遍历方式:

  1. for - each
  2. 迭代器 iterator

五、HashSet

HashSet是Set接口的实现类

底层结构: 哈希表 (数组+链表+红黑树) ->是由HashMap维护
优点 : 查询,增删效率较高
缺点 : 无序
应用场景: 实现不存储相同数据,查询,增删效率较高的时候建议使用HashSet
新增功能: 无新增功能
去重: 需要在存储数据的类型中重写hashcode与equals方法实现数据的去重

### JavaCollection集合的使用方法 #### 创建并初始化Collection对象 为了创建`Collection`类型的对象,通常会具体化为某个实现了该接口的具体类的对象。例如: ```java import java.util.*; // 使用ArrayList作为具体的实现类来实例化Collection Collection<String> collection = new ArrayList<>(); ``` 此代码片段展示了如何通过指定`ArrayList`作为底层容器来创建一个字符串类型的`Collection`[^1]。 #### 向Collection中添加元素 向`Collection`中添加新成员可以通过调用`add()`方法完成: ```java collection.add("Apple"); collection.add("Banana"); ``` 上述语句将两个水果名称加入到之前定义好的`Collection`实例里。 #### 迭代遍历Collection内的所有项 对于想要访问或处理整个序列的情况,则需借助迭代器来进行循环读取: ```java Iterator<String> iterator = collection.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); } ``` 这段程序能够逐一遍历`Collection`里的每一个条目,并打印出来。 #### 移除特定条件下的元素 如果希望依据一定标准删除某些项目的话,可以利用匿名内部类配合Lambda表达式的简洁方式达成目的: ```java collection.removeIf(item -> item.startsWith("A")); ``` 这里演示的是移走那些以字母“A”开头的所有词条的操作。 #### 判断是否存在某元素 确认目标列表内是否含有给定值可通过如下所示的方式查询: ```java boolean containsOrange = collection.contains("Orange"); System.out.println(containsOrange); ``` 这行命令用来检验名为“Orange”的果品是不是已经存在于当前维护着的一组数据之中。 #### 获取Collection大小 获取已存入项目的总数也很简单,只需调用size()函数即可得到结果: ```java int sizeOfCollection = collection.size(); System.out.println(sizeOfCollection); ``` 以上就是关于怎样运用Java中的`Collection`框架的一些基本指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值