目录
List接口
List接口(线性表接口):ArrayList(动态数组--要保存的元素个数不确定),LinkedList(链表)
增加
add(任意数据类型 新的值)add(int index,任意数据类型):在索引为index的位置上插入新元素,默认在集合尾部增加
查找
get(int index);返回index位置的元素值,
boolean contains(val):判断List中是否包含指定值
修改
set(int index ,newVal):修改index位置的元素,返回修改之前的元素值
删除
remove(int index):删除指定位置的元素
remove(val):删除指定元素,默认删除出现的第一个元素
集合类中如果用到基本数据类型,必须使用包装类
import java.util.ArrayList;
import java.util.List;
/**
* @author happy
*/
public class ListTest {
public static void main(String[] args) {
int[] data = {1,2,3,4,5,7};
List<Integer> list = new ArrayList<>();
for (int i:data) {
list.add(i);
}
System.out.println(list.contains(10));
System.out.println(list.get(3));
list.remove(1);
System.out.println(list);
int index = list.indexOf(7);
list.remove(index);
System.out.println(list);
//输出
false
4
[1, 3, 4, 5, 7]
[1, 3, 4, 5]
}
}
遍历
import java.util.ArrayList;
import java.util.List;
/**
* @author happy
*/
public class ListTest {
public static void main(String[] args) {
int[] data = {1,2,3,4,5,7};
List<Integer> list = new ArrayList<>();
for (int i:data) {
list.add(i);
}
//[1, 2, 3, 4, 5, 7]打印这个数组
System.out.println(list);
for (int temp:list) {
//1 2 3 4 5 7 分开打印每个元素
System.out.print(temp+" ");
}
}
}
Set接口
Set接口:一次存储一个不重复元素
- 元素的添加顺序和插入顺序没有太大关系(HastSet类)
- Set接口是List接口的子接口,只是元素插入有了不重复的限制,其他用法和List接口差不多,需要注意的是Set没有修改方法
注意
- 当向Set中添加了一个不重复的元素,返回true,如果Set已经有了需要添加的元素 ,不能再次添加,返回false
import java.util.HashSet;
import java.util.Set;
/**
* @author happy
*/
public class SetTest {
public static void main(String[] args) {
int[] data = {1,2,2,3,4,6,7,7,8};
Set<Integer> set = new HashSet<>();
for (int i:data) {
set.add(i);
}
if (set.add(2)){
System.out.println("添加成功");
}else {
System.out.println("该元素已经存在");
}
System.out.println(set);
}
}
//输出
该元素已经存在
[1, 2, 3, 4, 6, 7, 8]
- 使用HastSet时,元素的插入顺序和时间存储数据无关
import java.util.HashSet;
import java.util.Set;
/**
* @author happy
*/
public class SetTest {
public static void main(String[] args) {
String[] str = {"孙悟空","猪八戒","C"};
Set<String> set = new HashSet<>();
for (String s:str) {
set.add(s);
}
//[C, 孙悟空, 猪八戒]
System.out.println(set);
}
}
- 如果想要插入顺序和存储顺序一致,使用LinkedHashSet
import java.util.LinkedHashSet;
import java.util.Set;
/**
* @author happy
*/
public class SetTest {
public static void main(String[] args) {
String[] str = {"孙悟空","猪八戒","C"};
Set<String> set = new LinkedHashSet<>();
for (String s:str) {
set.add(s);
}
//[孙悟空, 猪八戒, C]
System.out.println(set);
}
}
- set.contains();方法,可以查找元素
import java.util.HashSet;
import java.util.Set;
/**
* @author happy
*/
public class SetTest {
public static void main(String[] args) {
String[] str = {"孙悟空","猪八戒","C"};
Set<String> set = new HashSet<>();
for (String s:str) {
set.add(s);
}
//false
System.out.println(set.contains("D"));
}
}
Map接口
Map接口:Map接口是一个映射的关系,一次存储两个元素 key = val(键值对应元素),key不重复,val可能重复,通过key值查找元素
添加/修改
put(key,val):将key和对应的val存储到Map中,如果key值存在,就修改val,如果key不存在,就添加val
import java.util.HashMap;
import java.util.Map;
/**
* @author happy
*/
public class MapTest {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"小张");
map.put(2,"小明");
map.put(3,"小王");
map.put(1,"小花");
//{1=小花, 2=小明, 3=小王}
System.out.println(map);
}
}
查找
- 根据指定的key查找val,如果不存在,返回null
String ret = map.get(1);
//小花
System.out.println(ret);
- 根据key取出映射的val,如果不存在,返回默认值
map.getOrDefault(2,"空");
- 判断当前Map中是否包含指定的key
//true
System.out.println(map.containsKey(2));
- 判断当前Map中是否包含指定的val
//false
System.out.println(map.containsValue("小李"));
删除
- 根据key删除,会删掉key和val
map.remove(1);
// {2=小明, 3=小王}
System.out.println(map);
- 删除key所在的键值对,返回删除前key对应的val值,如果不存在,返回null
//null
System.out.println(map.remove(10));
遍历
- 获取Map中的key集合
Map中key是唯一的,返回Set集合
- 获取Map中的val集合
Map中val是可以重复的,返回Collection(List的父接口)
- 如果需要依次取出Map中一个一个的键值对,需要将Map集合转换为Set集合再进行遍历
Map.Entry:这个接口存储的就是键值对(认为key=val是一个对象,将key和val捆绑在一起)
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* @author happy
*/
public class MapTest {
public static void main(String[] args) {
Map<Integer,String> map = new HashMap<>();
map.put(1,"小张");
map.put(2,"小明");
map.put(3,"小王");
map.put(1,"小花");
Set<Map.Entry<Integer,String>> entry = map.entrySet();
for (Map.Entry<Integer,String> temp:entry) {
System.out.println(temp.getKey() +"="+ temp.getValue());
}
}
}
//输出
1=小花
2=小明
3=小王