Collection:Lise 、Set
List :
有序的单列集合接口,存入的数据可以重复且有序。
Set:
无序的单列接口,存入数据不可重复。
Map: HashMap、LinkedHashMap
顶层接口,子接口有List,Set。
package com.bingjiu.conllection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
public class Conllection {
public static void main(String[] args) {
//Collection用法1
Collection conArr= new ArrayList();
//添加数据
conArr.add("添加数据");
conArr.add("生活方式");
//Collection用法2
Collection conLink = new LinkedList();
//添加数据
conLink.add(1);
conLink.add("跟客户说v");
}
}
package com.bingjiu.conllection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Conllection {
public static void main(String[] args) {
// Collection用法1
Collection conArr = new ArrayList();
// 添加数据
conArr.add("你好");
conArr.add("大漂亮");
conArr.add("大帅比");
conArr.add("年后");
conArr.add("就要你好看");
conArr.add("案说法工行卡就");
/*
* 第一种遍历的集合
*/
// 讲集合种的元素转位Object类型的数组
Object[] obj = conArr.toArray();
//进行遍历
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
}
/*
* 第二种遍历集合
*/
//获取迭代器对象,调用集合的iterator的方法
Iterator it = conArr.iterator();
//先判断当前位置是否有元素
while(it.hasNext()) {
Object ob=it.next();
System.out.println(ob);
}
}
}
方法 | 说明 |
---|---|
add(Object c) | 将c元素添加到集合中 |
remove(Object c) | 将c从集合中删除 |
clear() | 清空集合中的元素 |
size() | 获取集合中元素个数 |
isEmpty() | 判断是否为空 |
addAll(Collection c) | 将集合c中的所有元素添加到调用者集合中 |
containsAll(Collection c) | 判断调用者集合中包含c中的所有元素 |
removeAll(Collection c) | 删除调用者集合中所有c中的元素 |
retainAll(Collection c) | 参数c中有哪些元素,就在调用者集合中,保留哪些元素 |
方法 | 说明 |
---|---|
sort(List list) | 对list集合进行自然升序排序 |
binarySearch(List lit, T key) | 二分查找法,返回元素的位置,查找的集合必须有序 |
frequency(Collection> c, Object o) | 获取集合中等于o元素的个数 |
reverse(List> list) | 反转集合中的元素 |
shuffle(List> list) | 随机打乱集合中的元素的顺序 |
swap(List> list,int i ,int j) | 交换集合中i和j的位置的元素 |
replaceAll(List list ,T oldVaa,T newVal) | 可以将集合中旧的值转为新的值 |
代码:
package com.ujiuye.demo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Demo10 {
public static void main(String[] args) {
List<Integer> l = new ArrayList<>();
l.add(5);
l.add(10);
l.add(10);
l.add(10);
l.add(6);
l.add(3);
l.add(1);
System.out.println(l);
//排序
Collections.sort(l);
System.out.println(l);
//二分查找法
int i = Collections.binarySearch(l, 5);
System.out.println(i);
//查找集合中的最大值最小值
System.out.println(Collections.max(l));
System.out.println(Collections.min(l));
//判断该集合中含有该元素的个数
int j = Collections.frequency(l, 10);
System.out.println(j);
//反转集合
Collections.reverse(l);
System.out.println(l);
// //随机打乱顺序
// Collections.shuffle(l);
// System.out.println(l);
//元素交换
Collections.swap(l, 3, 4);
System.out.println(l);
//返回一个不可修改的集合
// List list = Collections.unmodifiableList(l);
// System.out.println(list);
// list.add(1);
Collections.replaceAll(l, 10, 8);//新旧交换
System.out.println(l);
}
}
有序的单列集合接口,存入的数据可以重复且有序。
实现类 | 说明 | 用法 |
---|---|---|
ArrayList | 数组结构存储数据,查询速度快,增删改慢 | List list = new ArrayList() |
LinkList | 链表结构存储数据,增删速度快,查询稍慢; | List list = new LinkList(); |
Vector | 数据结构存储数据 |
List三个实现类区别:可转向zxx901221的博客文章
方法 | 说明 |
---|---|
add(int index , Object obj) | 向指向位置index插入一个元素obj |
remove(int index) | 根据位置删除一个元素 |
set(int index,Object obj) | 将指定位置的元素替换为obj |
get(int index) | 获取指定位置index的元素 |
package com.bingjiu.conllection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ConllectionList {
public static void main(String[] args) {
// 集合对象
List list2=new LinkedList();
List list = new ArrayList();
// 添加数据
list.add(1);
list.add(2);
list.add(3);
list.add(4);
//遍历方法 1
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
//遍历方法2
Iterator iterator = list.iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next());
}
//遍历方法3
Object[] obj=list.toArray();
for(int i=0; i<obj.length;i++) {
System.out.println(obj[i]);
}
}
}
无序的单列接口,存入数据不可重复,没有索引。
实现类 | 说明 |
---|---|
Hashset | 底层数据结构是哈希表,存储的数据无序 |
LinkedHashSet | 通过哈希表加上链表的形式存储数据,hash存储元素,链表维护元素的存入的先后顺序 |
package com.bingjiu.conllection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
public class ConllectionSet {
public static void main(String[] args) {
//set的实现类用法
Set<String> s=new LinkedHashSet<String>();
Set<Integer> set = new HashSet<Integer>();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
// 遍历set集合,1
for (Integer i : set) {
System.out.println(i);
}
// 遍历set集合,2
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
// 遍历set集合,3
Object[] obj = set.toArray();
for (int i = 0; i < obj.length; i++) {
System.out.println(obj[i]);
}
}
}
Map数据结构,描述一个数据(Key)到另一个数据(value)的映射关系。
key(键)的值是唯一的,value(值)不是唯一的。
实现类 | 说明 |
---|---|
HashMap | 最常用的Map,存储没有顺序 |
LinkedHashMap | 保存了记录的插入顺序 |
方法 | 说明 |
---|---|
put(K key,V value) | 如果Key不存在,就是添加。如果key存在,就是修改Key值对应的value |
remove(Object key) | 删除键值对的方法,如果有key存在,就能删除,并把value值返回 |
clear() | 清空 |
containsKey(Object key) | 判断是否包含某个键 |
containsValue(Object value) | 判断是否包含某个值 |
size() | 获取元素个数 |
get(Object key) | 根据key值返回value值,找不到返回null |
isEmpty | 判断集合是否为空(无元素) |
package com.bingjiu.conllection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class MapKeyValue {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(001, "张飞");
map.put(002, "关羽");
map.put(003, "曹操");
map.put(004, "孙权");
// 遍历集合,1
Set<Integer> s = map.keySet();// 获取所有的Key值
for (Integer k : s) {
System.out.println(map.get(k));
}
// 遍历集合,2
Set<Entry<Integer, String>> entrySet = map.entrySet();
for (Entry<Integer, String> e : entrySet) {
int key = e.getKey(); // 获取当前键值
String valuer = e.getValue(); // 获取当前值 值
System.out.println(key + "-->" + valuer);
}
}
}
都是存储数据的。
1.Map是双列集合,Collection是单列集合;
2.Map下的键是唯一的, Collection下list是有序不唯一,set是无序唯一;
3.Map操作的方法基本都和Key有关,list和下标有关,set和元素有关。