Java基础之集合框架详解
Java集合类总结大全
Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素。
集合是Java中提供的一种容器,可以存储多个数据。
集合和数组之间的差别
数组的长度是固定的,集合的长度是可变的
数组中存储的是同一类型的元素,可以存储基本数据类型的值。(可以是对象,可以是基本数据类型)
集合存储的都是对象,而且对象的类型可以不一致。(只能是对象)
Collection:单列集合类的根接口,用于存储一系列符合某种规则的元素。
它有两个重要的子接口,分别是 java.util.List 和 java.util.Set 。
List 的特点是元素有序、元素可重复。
Set 的特点是元素无序而且不可重复。
List 接口的主要实现类有 java.util.ArrayList 和Java.util.LinkedList
Set 接口的主要实现类有 java.util.HashSet 和 java.util.TreeSet
Collection接口中常用的方法
-
public static void main(String[]args){
-
//创建集合对象,使用多态
-
Collection<String>coll=newArrayList<>();
-
System.out.println(coll);//空
-
//add()方法
-
booleanb1=coll.add("小小张自由!");
-
coll.add("小张!");coll.add("小小张!");
-
coll.add("小小自由!");coll.add("小小张自由!");
-
-
System.out.println(coll);
-
-
//remove()方法
-
coll.remove("小小张自由!");//重复值只删除第一个
-
System.out.println(coll);
-
-
//contains()方法判断集合中是否包含给定对象
-
System.out.println(coll.contains("zyb"));
-
System.out.println(coll.contains("小小张自由!"));
-
-
//isEmpty();判断集合是否为空
-
System.out.println(coll.isEmpty());
-
-
//size()方法返回集合中元素的个数
-
System.out.println(coll.size());
-
-
//toArray()方法把集合中元素存储到数组中
-
Object[]objects=coll.toArray();
-
for(inti=0;i<objects.length;i++){
-
System.out.println(objects[i]);
-
}
-
//遍历集合
-
/*for(inti=0;i<coll.size();i++){
-
System.out.println(coll[i]);
-
}*/
-
//清空
-
coll.clear();
-
System.out.println(coll);
-
}
List接口中常用的方法
- public void add(int index, E element): 将指定的元素,添加到该集合中的指定位置上。
- public E get(int index):返回集合中指定位置的元素。
- public E remove(int index): 移除列表中指定位置的元素, 返回的是被移除的元素。
- public E set(int index, E element):用指定元素替换集合中指定位置的元素,返回值的更新前的元素。
ArrayList集合
java.util.ArrayList集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为查询数据、遍历数据,所以ArrayList是最常用的集合。
LinkedList集合
java.util.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。
LinkedList集合特有的方法
- public void addFirst(E e):将指定元素插入此列表的开头。
- public void addLast(E e):将指定元素添加到此列表的结尾。
- public E getFirst():返回此列表的第一个元素。
- public E getLast():返回此列表的最后一个元素。
- public E removeFirst():移除并返回此列表的第一个元素。
- public E removeLast():移除并返回此列表的最后一个元素。
- public E pop():从此列表所表示的堆栈处弹出一个元素。
- public void push(E e):将元素推入此列表所表示的堆栈。
- public boolean isEmpty():如果列表不包含元素,则返回true。
-
private static void show01(){
-
LinkedList<String>LinkedList=newLinkedList<String>();
-
LinkedList.add("a");LinkedList.add("b");
-
LinkedList.add("c");LinkedList.add("d");
-
-
System.out.println("原始数组"+LinkedList);
-
System.out.println(LinkedList.removeFirst());//移除第一个与pop()效果一样
-
System.out.println(LinkedList.removeLast());
-
-
LinkedList.addFirst("Java");//开头与push()效果一样
-
LinkedList.addLast("promsing");//结尾与add()效果一样
-
System.out.println(LinkedList);
-
System.out.println(LinkedList.getFirst());//获取第一个
-
System.out.println(LinkedList.getLast());//获取最后一个
-
-
}
set接口
HashSet集合
-
public class HashSetDemo {
-
public static void main(String[] args) {
-
//创建 Set集合
-
HashSet<String> set = new HashSet<String>();
-
//添加元素
-
set.add(new String("cba"));
-
set.add("abc");
-
set.add("bac");
-
set.add("cba");
-
//遍历
-
for (String name : set) {
-
System.out.print(name);
-
}
-
}
-
}
-
//输出结果为 cba abc bac
LinkedHashSet集合
-
public class LinkedHashSetDemo {
-
public static void main(String[] args) {
-
Set<String> set = new LinkedHashSet<String>();
-
set.add("bbb");
-
set.add("aaa");
-
set.add("abc");
-
set.add("bbc");
-
Iterator<String> it = set.iterator();
-
while (it.hasNext()) {
-
System.out.print(it.next());
-
}
-
}
-
}
-
//输出结果为 bbb aaa abc bbc
Collections:集合工具类
- public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。
- public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。
- public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。
- public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排序。
-
public static void main (String[] args){
-
ArrayList<String> list = new ArrayList<>();
-
Collections.addAll(list,"a","b","c","d","e");//批量添加多个e
-
System.out.println(list);
-
Collections.shuffle(list);//打乱
-
System.out.println(list);
-
}
双列集合Map
Map接口中常用的方法
-
public static void main(String[] args) {
-
//创建 map对象
-
HashMap<String, String> map = new HashMap<String, String>();
-
//添加元素到集合
-
map.put("黄晓明", "杨颖");
-
map.put("文章", "马伊琍");
-
map.put("邓超", "孙俪");
-
System.out.println(map);
-
//String remove(String key)
-
System.out.println(map.remove("邓超"));
-
System.out.println(map);
-
// 想要查看 黄晓明的媳妇 是谁
-
System.out.println(map.get("黄晓明"));
-
System.out.println(map.get("邓超"));
-
}
Map集合的两种遍历方式
一、使用set方法 通过键找值的方式
-
public static void main(String[] args) {
-
-
Map<String,Integer> map=new HashMap<>();
-
map.put("郭靖",175);
-
map.put("杨过",180);
-
map.put("乔峰",183);
-
map.put("无忌",177);
-
//1、使用Map集合中的方法keySet()方法,把Map集合中所有的key取出来,存储到set集合中
-
Set<String> set=map.keySet();
-
//2、遍历set集合,获取Map集合中的每一个key
-
//使用迭代器遍历set集合
-
Iterator<String>iterator=set.iterator();
-
while(iterator.hasNext()){
-
String key=iterator.next();
-
//3、通过Map集合中的方法get(),通过Key找到value
-
Integer integer=map.get(key);//根据指定的键,找到对应的值
-
System.out.println(key+","+integer);
-
-
}
-
System.out.println("增强For循环========");
-
for(String key:set){
-
Integer integer=map.get(key);//根据指定的键,找到对应的值
-
System.out.println(key+","+integer);
-
}
-
}
二、使用Entry对象遍历map集合
-
public static void main(String[] args) {
-
-
Map<String,Integer> map=new HashMap<>();
-
map.put("郭靖",175);
-
map.put("杨过",180);
-
map.put("乔峰",183);
-
map.put("无忌",177);
-
//一、使用Map集合中的entrySet()方法,把Map集合中多个entry对象取出来,存储到Set集合中
-
Set<Map.Entry<String,Integer>>set=map.entrySet();
-
//二、遍历Set集合,获取每一个entry对象
-
Iterator<Map.Entry<String,Integer>>iterator=set.iterator();
-
while(iterator.hasNext()){
-
Map.Entry<String,Integer>entry=iterator.next();
-
String key=entry.getKey();
-
Integer value=entry.getValue();
-
System.out.println(key+","+value);
-
}
-
System.out.println("增强For循环==============");
-
for(Map.Entry<String,Integer>entry:set){
-
}
-
-
}
LinkedHashMap:存储有序-它是链表和哈希表组合的一个数据存储结构。
-
public class LinkedHashMapDemo {
-
public static void main(String[] args) {
-
LinkedHashMap<String, String> map = new LinkedHashMap<String, String>();
-
map.put("邓超", "孙俪");
-
map.put("李晨", "范冰冰");
-
map.put("刘德华", "朱丽倩");
-
Set<Entry<String, String>> entrySet = map.entrySet();
-
for (Entry<String, String> entry : entrySet) {
-
System.out.println(entry.getKey() + " " + entry.getValue());
-
}
-
}
-
}
创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。
文章来源: blog.csdn.net,作者:小小张自由—>张有博,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/promsing/article/details/112404457
- 点赞
- 收藏
- 关注作者
评论(0)