本文章仅供己参考,如果有图片侵权请告知删除。
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);