一、集合
Java的集合类是一种特别有用的工具类,它可以用于存储数量不等的多个对象,并可以实现常用数据结构,如栈,队列等,除此之外,Java集合还可用于保存具有映射关系的关联数组。
Java的集合大致上可分为:Set,List和Map三种体系,其中Set代表无序,不可重复的集合;List代表有序,重复的集合,而Map则代表具有映射关系的集合。
Queue体系集合,代表一种队列集合实现。
Java集合就像是一个容器,我们可以把多个对象(实际上是对象的引用,习惯上叫对象,)保存到集合容器中。
1.1 List(列表)
List集合特点:
1、它是一个元素存取有序的集合。例如,存元素的顺序是5、2、7。那么集合中,元素的存储就是按照5、2、7的顺序完成的)。
2、它是一个带有索引的集合。
3、集合中可以有重复的元素。
ArrayList集合:
只能存储引用数据类型ArrayList是顺序结构
特点:查询快,增删慢,线程不安全,效率高。常用方法:
public void add(int index, E element) : 将指定的元素,添加到该集合中的指定位置上。
public E get(int index) : 返回集合中指定位置的元素。
public E remove(int index) : 移除列表中指定位置的元素, 返回的是被移除的元素。
public E set(int index, E element) : 用指定元素替换集合中指定位置的元素,返回值的更新前的元素
piblic int lastIndexOf(Object o) : 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
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 E pollFirst() :检索并删除此列表的第一个元素,如果此列表为空,则返回 null 。
public E pollLast() :检索并删除此列表的最后一个元素,如果此列表为空,则返回 null 。
public boolean isEmpty() :如果列表不包含元素,则返回true
1.2 Map(映射)
Map集合特点:
元素无序元素通过键值对的方式进行存储。
键不可重复,值可重复。
HashMap常用方法:
public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的
值。
public V get(Object key) :根据指定的键,在Map集合中获取对应的值。
public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。
public Collection<V> values() : 返回此地图中包含的值的Collection视图。
public V replace(K key, V value) : 只有当目标映射到某个值时,才能替换指定键的条目。
Tree
Map常用方法:
public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中。
public V remove(Object key) : 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值。
public V get(Object key) :根据指定的键,在Map集合中获取对应的值。
public Set<K> keySet() : 获取Map集合中所有的键,存储到Set集合中。
public Set<Map.Entry<K,V>> entrySet() : 获取到Map集合中所有的键值对对象的集合(Set集合)。
public Collection<V> values() : 返回此地图中包含的值的Collection视图。
public V replace(K key, V value) : 只有当目标映射到某个值时,才能替换指定键的条目。
public K firstKey() : 返回此地图中当前的第一个(最低)键。
1.3 set(集)
set集合特点:
1、元素无顺序
2、不包含重复的元素
HashSet常用方法:
public E add(E e) : 将指定的元素添加到此集合(如果尚未存在)。
public void clear() : 从此集合中删除所有元素。
public boolean contains(Object o) : 如果此集合包含指定的元素,则返回 true 。
public boolean isEmpty() : 如果此集合不包含元素,则返回 true 。
public boolean remove(Object o) : 如果存在,则从该集合中删除指定的元素。
public int size() : 返回此集合中的元素数(其基数)。 TreeSet常用方法:public E add(E e) : 将指定的元素添加到此集合(如果尚未存在)。
public void clear() : 从此集合中删除所有元素。
public boolean contains(Object o) : 如果此集合包含指定的元素,则返回 true 。
public boolean isEmpty() : 如果此集合不包含元素,则返回 true 。
public boolean remove(Object o) : 如果存在,则从该集合中删除指定的元素。
public int size() : 返回此集合中的元素数(其基数)。
public E first() : 返回此集合中当前的第一个(最低)元素。
2、ArrayList方法实例
package com.xinzhi;/*
*@author Whispers 私语
*@date 2020/2/12
*/
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
Test test = new Test();
test.Test1();
}
public void Test1(){
List<String> strings = new ArrayList<>();
strings.add("sss");
strings.add("aaa");
strings.add("xxx");
strings.add("www");
strings.add(2,"hhh");
strings.remove(2);//删除指定索引的元素
strings.remove("www");//删除指定元素
System.out.println("返回下标为2的元素:"+strings.get(2));
System.out.println("查看集合中是否含有元素【xxx】"+strings.contains("xxx"));
System.out.println("查看【sss】第一次出现的索引是"+strings.indexOf("sss"));
System.out.println("查询此列表有没有元素:"+strings.isEmpty());
System.out.println("查询此列表【hhh】最后一次出现的索引是"+strings.lastIndexOf("hhh"));
strings.set(0,"yyy");//用索引为0元素替换yyy。
System.out.println("此列表中元素数量为:"+strings.size());
List<String> strings1 = strings.subList(2, 3);//返回此列表中指定的2(包括)和 3之间的元素。
for (int i = 0; i < strings1.size(); i++) {
System.out.println(strings1.get(i));
}
System.out.println("------");
List<String> strings2 = new ArrayList<>();
strings.add("sss");
strings.add("aaa");
strings.add("xxx");
strings.add("www");
strings2.addAll(strings);//将strings集合中的所有元素追加到strings2集合的末尾。
for (int i = 0; i < strings2.size(); i++) {
System.out.println(strings2.get(i));
}
}
}
3、LinkList方法实例
package com.xinzhi;/*
*@author A空巷
*@date 2020/2/12
*/
import java.util.ArrayList;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
public class TestLinkList {
public static void main(String[] args) {
TestLinkList testLinkList = new TestLinkList();
testLinkList.test1();
}
public void test1(){
LinkedList<String> strings = new LinkedList<>();
strings.add("sss");
strings.add("aaa");
strings.add("xxx");
strings.add("xxx");
strings.add("xxx");
strings.addFirst("hhhh"); //将元素插入列表的开头
strings.addLast("iii"); //将元素插入列表的末尾
strings.poll(); //删除此列表的头
strings.pollLast();//删除此列表的最后一个元素
System.out.println(strings.getFirst()); //获取列表中第一个元素
System.out.println(strings.getLast()); //获取列表中最后一个元素
String pop = strings.pop(); //从列表中弹出一个元素
System.out.println(pop); //
String s = strings.pollFirst();
System.out.println("----"+s);
}
}
4、HashMap、TreeMap方法实例
package com.xinzhi;/*
*@author A空巷
*@date 2020/2/12
*/
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class TestHashMap {
public static void main(String[] args) {
TestHashMap testHashMap = new TestHashMap();
testHashMap.test1();
}
public void test1(){
Map<String,User> map = new HashMap<>();
map.put("111",new User("aaa",18,1));
map.put("222",new User("bbb",18,1));
map.put("333",new User("xxx",18,1));
System.out.println(map.containsKey("111"));//通过键查找,返回 true
System.out.println(map.isEmpty());//判断当前Map中是否为空
map.remove("111");
map.replace("222",new User("ccc",20,1));//替换
//获取key
Set<String> strings = map.keySet();
//遍历所有的key
for (String key : strings) {
//通过key获取名字
System.out.println(map.get(key).getName());
}
System.out.println("当前map中键值数量为:"+map.size());
//返回所有的value
Collection<User> values = map.values();
//遍历value
for (User value : values) {
//通过value找name
System.out.println(value.getName());
}
//map遍历
//map存的都是entry这种键值对,使用增强for循环拿到一个个键值对
for (Map.Entry<String, User> entrt : map.entrySet()) {
System.out.println(entrt.getKey());
System.out.println(entrt.getValue());
}
}
}
5、HashSet、TreeSet方法实例
/*package com.xinzhi;
*@author A空巷
*@date 2020/2/12
*/
import java.util.HashSet;
import java.util.Iterator;
public class TestHashSet {
public static void main(String[] args) {
TestHashSet testHashSet = new TestHashSet();
testHashSet.test1();
}
public void test1() {
HashSet<String> strings = new HashSet<>();
strings.add("sss");
strings.add("aaa");
strings.add("xxx");
strings.add("www");
strings.add("www");
//strings.clear();//删除集合中所有元素
System.out.println(strings.contains("aaa"));//查询当前集合中是否存在元素【aaa】
System.out.println(strings.isEmpty());//判断当前集合是否为空
strings.remove("www");//删除集合中www元素
for (String string : strings) {
System.out.println(string);
}
System.out.println("当前集合中元素个数为:" + strings.size());
}
}
6、set自动排序
HashSet<Integer> strings = new HashSet<>();
strings.add(10);
strings.add(3);
strings.add(4);
strings.add(2);
strings.add(1);
for (Integer string : strings) {
System.out.println(string);
}
运行结果---
1
2
3
4
10
7、set去重
package com.xinzhi;/*
*@author A空巷
*@date 2020/2/12
*/
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
public class TestArrayList {
public static void main(String[] args) {
TestArrayList testArrayList = new TestArrayList();
testArrayList.test1();
}
public void test1(){
List<String> strings = new ArrayList<>();
strings.add("sss");
strings.add("aaa");
strings.add("xxx");
strings.add("xxx");
strings.add("xxx");
strings.add("www");
strings.add("www");
HashSet<String> strings1 = new HashSet<>(strings);
for (String string : strings1) {
System.out.println(string);
}
strings = new ArrayList<>(strings1);
}
}