Java开发中的集合列表学习总结

通过学习了 Java 中的集合类,了解到集合类是 Java 数据结构的实现。Java的集合类是在 java.util 包中,它允许以各种方式将元素分组,并定义了各种方法使这些元素更容易操作。

集合类型

1.一种是集合(Collection),存储一个元素集合。

2.一种是图(Map),存储键/值对映射。

集合框架

- 接口:是集合的抽象数据类型,如: Collection、List、Set、Map 等。

- 实现类:是集合接口的具体实现,如:ArrayList、LinkedList、HashSet、HashMap等。

- 算法:是实现集合接口的对象里的方法执行的一些有用的计算。

List和Set区别

- List 接口实例存储的是有序的,可以重复的元素,允许多个null。Set 接口实例存储的是无序的,不重复的数据,允许null。

- List类似数组,大小可以动态增长,查找效率高,插入和删除效率低。

- Set 查找效率低下,插入和删除效率高。

ArrayList 类

ArrayList 类是一个可以动态修改的数组,线程同步不安全,继承了 AbstractList ,并实现了 List 接口。

public class ArrayListDemo {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		ArrayList<Integer> list = new ArrayList<Integer>();
		// 添加元素
		list.add(1);
		list.add(2);
		list.add(3);
		System.out.println(list);
		// 修改元素
		list.set(1, 5); // 第一个参数为索引值,第二个为要修改的值
		System.out.println(list);
		// 删除元素
		list.remove(2); 
		System.out.println(list);
		// 获取第二个元素
		int val = list.get(1);
		System.out.println(val);
		// 获取大小
		int len = list.size();
		System.out.println(len);
		// 循环列表,可以使用 for 或者 for-each 迭代元素
		for (Integer i : list) {
            System.out.println(i);
        }
	}
}

其它一些常用方法:clear,clone,indexOf,isEmpty,sort,forEach等。

LinkedList类

LinkedList 是一种线性表,是一种常用的数据容器;增加和删除的操作效率较高,而查找和修改的操作效率较低。

通常在以下情况下使用:通过循环迭代来访问列表中的某些元素;频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

public class LinkedListDemo {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		LinkedList<Integer> list = new LinkedList<Integer>();
		// 添加元素
		list.add(1);
		list.add(2);
		list.add(3);
		System.out.println(list);
		// 在头部添加元素
		list.addFirst(0);
		System.out.println(list);
		// 在尾部添加元素
		list.addLast(10);
		System.out.println(list);
		// 修改元素
		list.set(1, 5); // 第一个参数为索引值,第二个为要修改的值
		System.out.println(list);
		// 删除元素
		list.remove(2); 
		System.out.println(list);
		// 获取第二个元素
		int val = list.get(1);
		System.out.println(val);
		// 获取大小
		int len = list.size();
		System.out.println(len);
		// 循环列表,可以使用 for 或者 for-each 迭代元素
		for (Integer i : list) {
            System.out.println(i);
        }
	}
}

其它一些常用方法:clear,removeFirstpoll,indexOf,peek,clone,toArray等。

HashSet类

HashSet 是一个不允许有重复元素的集合,是无序的,允许有 null 值,是线程不安全的。

public class HashSetDemo {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		HashSet<Integer> list = new HashSet<Integer>();
		// 添加元素
		list.add(1);
		list.add(2);
		list.add(3);
		System.out.println(list);
		// 删除元素
		list.remove(3); 
		System.out.println(list);
		// 判断是否存在
		boolean isExist = list.contains(1);
		System.out.println(isExist);
		// 获取大小
		int len = list.size();
		System.out.println(len);
		// 循环列表,可以使用 for 或者 for-each 迭代元素
		for (Integer i : list) {
            System.out.println(i);
        }
		// 清空所有元素
		list.clear();
		System.out.println(list);
	}
}

HashMap类

HashMap 是散列表,存储的内容是键值对(key-value);实现了 Map 接口,访问速度快;是无序的;最多允许一条记录的键为 null,不支持线程同步。

HashMap 实现了 Map、Cloneable、java.io.Serializable 接口。

public class HashMapDemo {
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		HashMap<String, String> list = new HashMap<String, String>();
		list.put("name", "java");
		list.put("price", "120");
		list.put("auth", "Taobao");
		System.out.println(list);
		// 获取元素
		String str = list.get("name");
		System.out.println(str);
		// 删除元素
		list.remove("name");
		System.out.println(list);
		// 获取大小
		int len = list.size();
		System.out.println(len);
		// 循环列表,可以使用 for-each 迭代元素
        for (String i : list.keySet()) {
            System.out.println("key: " + i + ", value: " + list.get(i));
        }
        // 返回所有 value 值
        for(String value: list.values()) {
          System.out.print(value + ", ");
        }
		// 清空所有元素
        System.out.println();
		list.clear();
		System.out.println(list);
	}
}

其它一些常用方法:clear,clone,isEmpty,replace,containsKey,containsValue,forEach,values等。

温馨提示

文章内容如果写的存在问题欢迎留言指出,让我们共同交流,共同探讨,共同进步~~~

文章如果对你有帮助,动动你的小手点个赞,鼓励一下,给我前行的动力。

(完)