Java集合笔记

125 阅读3分钟

本文章仅供己参考,如果有图片侵权请告知删除。

Java集合

概念:集合属于对象的容器,Collection为List和Set父接口。

1.Collection常用方法:

boolean add(E e)		添加元素
boolean remove(Object o)	移除元素
Iterator<E> iterator()		迭代器
int size()			获取集合长度
boolean isEmpty()		判断是否为空

1.1 Iterator迭代器方法: 【常用】

  • hasNext()
  • naxt()
  • remove()

2.List集合

特点:有序的、有下标、元素可以重复

2.1 List 额外常用方法:

List subList(int index,int end)		获取指定范围子集合
ListIterator<E> listIterator()		获取迭代器

2.2 ListIterator迭代器方法:(新增)

  • add() 添加元素
  • hasPrevious() 反向判断元素
  • previous() 反向获取元素

2.3 ArrayList集合:【常用】

特点:底层数组结构、查询快、增删慢

2.4LinkedList集合:

特点:底层双向链表结构、增删快、查询慢

3.Set集合

特点:无序的、无下标、元素不可以重复,(无额外方法)

3.1HashSet集合:【常用】

特点:底层哈希表结构(数组+链表+红黑树)
基于HashCode计算元素存放的位置,当存入的哈希码相同时,会调用equals进行确认,结果为true,则无法存入。为false则添加链表。

3.2TreeSet集合:

特点:底层红黑树结构
基于排序顺序实现元素不重复,并且添加的元素必须实现了Comparabel接口,代表加入的元素是可比较的

4.Map集合

特点:键值对形式、无序、无下标、键不能重复,值可以

4.1Map集合常用方法:

put()		添加键值对元素
get()		获取键的值
remove()	移除键(删除整个键值对)
keySet()	获取存有key的Set集合,用于遍历Map
entrySet()	获取存有Entry键值对的Set集合,用于遍历Map

keySet() 遍历例子: 只获取key,遍历效率较低

 	所获取的Set集合的泛型为key类型
 	Set<String> keySet=map.keySet();
	for (String str : keySet) {
		System.out.println(str+"------"+map.get(str));
	}

entrySet() 遍历例子: 直接获取键值对,遍历效率较高

	获取的entry是一组键值对,直接打印entry对象可以打印出键和值
	Set<Map.Entry<String, String>> entrySet=map.entrySet();
	for (Map.Entry<String, String> entry : entrySet) {
		System.out.println(entry.getKey()+"--------"+entry.getValue());
	}

存放其他类遍历例子:

		HashMap<Student,String> hashMap=new HashMap();
		Student s1=new Student("张三",20);
		Student s2=new Student("李四",21);
		Student s3=new Student("王五",22);
		
		hashMap.put(s1, "北京");
		hashMap.put(s2, "南京");
		hashMap.put(s3, "天津");
	
		System.out.println("遍历HashMap,通过keySet");
		Set<Student> set= hashMap.keySet();
		for (Student student : set) {
			System.out.println(student.getName()+"---------"+hashMap.get(student));
		}
		
		System.out.println("通过entrySet遍历");
		Set<Map.Entry<Student, String>> entry=hashMap.entrySet();
		for (Map.Entry<Student, String> e : entry) {
			System.out.println(e.getKey().getName()+"-----------"+e.getValue());
		}

4.2HashMap集合:

特点:底层哈希表结构(数组+链表+红黑树)

4.3TreeMap集合:

特点:底层红黑树结构

*注:HashSet底层调用HashMap集合,TreeSet底层调用TreeMap集合。

4.Collections工具类:

集合常用的一些方法,这些方法都是静态的

reverse(list)		反转集合中的顺序
shuffle(list)		打乱集合中的元素顺序
sort(list)		升序排序
binarySearch(list,obj)	查找指定元素的下标
copy(newList,oldList)	复制集合到另一个集合(两个集合大小要一致)

额外方法,集合数组互相转换

		ArrayList<Integer> list=new ArrayList();
		list.add(23);
		list.add(22);
		list.add(16);
		list.add(78);
        
		集合转数组
		System.out.println("集合转数组:");
		设置数组的类型,0表示与集合大小一样
		Integer[] arr=list.toArray(new Integer[0]);
		System.out.println(Arrays.toString(arr));
		
	
		数组转集合,转成集合后,该集合不可添加和删除元素(长度固定)
		System.out.println("数组转集合:");
		String[] str= {"aa","bb","cc"};
		List<String> strList=Arrays.asList(str);
		System.out.println(strList);