赞
踩
目录
为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类。集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。Java 所有的集合类都位于 java.util 包下,提供了一个表示和操作对象集合的统一构架,包含大量集合接口,以及这些接口的实现类和操作它们的算法。
集合类和数组不一样,数组元素既可以是基本类型的值,也可以是对象(实际上保存的是对象的引用变量),而集合里只能保存对象(实际上只是保存对象的引用变量,但通常习惯上认为集合里保存的是对象)。
Java 集合类型分为 Collection 和 Map,它们是 Java 集合的根接口,这两个接口又包含了一些子接口或实现类。图 1 和图 2 分别为 Collection 和 Map 的子接口及其实现类。
图 1 Collection接口基本结构
图 2 Map接口基本结构
下标
- @Test//测试用力
- public void test03() {
- for (Integer integer : list) {
- System.out.println(integer);
- }
- }
迭代器
- @Test//测试用力
- public void test04() {
- Iterator<Integer> it=list.iterator();
- while (it.hasNext()) {
- System.out.println(it.next());
- }
- }
运行这段代码的时候出现了一个报错
- @Test
- public void del() {
- list.remove(1);
- System.out.println(list);
- }
报错结果
为什么?
程序发现那个位置也就是0位置那里并没有值,就会报这个错,也有人说是越界错误,也是可以理解的。数组越界了
解决方案:
- @Test
- public void del01() {
- for (int i = 0; i < list.size(); i++) {
- if(list.get(i)==3) {
- list.remove(i);
- }
- }
- System.out.println(list);
- }
原始数据:
运行结果:
由此可以看出 删除了两个为3的元素
这就是为什么Arraylist 不适合删除的原因
但是可以推荐大家使用迭代器删除
代码示例:
- //迭代器删除
- @Test
- public void del02() {
- Iterator<Integer> it=list.iterator();
- while (it.hasNext()) {
- Integer value=it.next();
- if(value==3) {
- it.remove();
- }
- }
- System.out.println(list);
- }
运行结果:
所有为3的元素已全部删除
建议使用迭代器删除
效率太慢 不常用
- private HashSet<Integer> set = new HashSet<>();
-
- @Before
- public void set01() {
- set.add(1);
- set.add(2);
- set.add(2);
- set.add(3);
- set.add(4);
- set.add(5);
- }
-
- @Test
- public void test() {
- for (Integer integer : set) {
- System.out.println(integer);
- }
-
- }

运行结果
实现了自动去重 所以需要去重的集合 可以借助hashset
线程不安全,最常用,速度快
内部采用数组来存放数据(红黑树)
线程安全,不太常用
线程安全,比HashTable性能高
LinkedHashMap是有序的,且默认为插入顺序
当我们希望有顺序地去存储key-value时,就需要使用LinkedHashMap了
- Map<String, String> linkedHashMap = new LinkedHashMap<>();
- linkedHashMap.put("name1", "josan1");
- linkedHashMap.put("name2", "josan2");
- linkedHashMap.put("name3", "josan3");
- Set<Entry<String, String>> set = linkedHashMap.entrySet();
- Iterator<Entry<String, String>> iterator = set.iterator();
- while(iterator.hasNext()) {
- Entry entry = iterator.next();
- String key = (String) entry.getKey();
- String value = (String) entry.getValue();
- System.out.println("key:" + key + ",value:" + value);
- }
java.lang.Comparable
java.util.Comparator
Collections 提供一组静态方法操作集合
Arrays 提供一组静态方法操作数组
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。