容器类
数组不灵活,不能随需求的变化扩容。可以快速访问数组元素。
单例集合:将数据一个一个进行存储。
Collection
1、增加元素到容器
boolean add(Object element)
2、从容器中移除
boolean remove(Object element)
3、容器中是否存在该元素
boolean contains(Object element)
4、容器中元素数量
int size()
5、容器是否为空
boolean isEmpty()
6、清空容器中所有元素
void clear()
7、获得迭代器,用于遍历元素
Iterator iterator()
8、本容器中是否包含c容器中所有元素
boolean containAll(Collection c)
9、将容器c中所有元素增加到本容器
boolean addAll(Collection c)
10、移除本容器和容器c中都包含的元素
boolean removeAll(Collection c)
11、取本容器和容器c中都包含的元素
boolean retainAll(Collection c)
12、转化成object数组
Object[] toArray()
List
特点:有序、可重复
1、指定位置插入元素,以前元素全部后移一位
void add(int index,Object element)
2、返回指定位置元素
Object get(int index)
3、修改指定位置元素
Object set(int index.Object element)
4、删除指定位置元素
Object remove(int index)
5、返回第一个匹配元素的索引,如果没有返回-1
int indexOf(Object o)
6、返回最后一个匹配元素的索引,如果没有,返回-1
int lastIndexOf(Object o)
ArrayList容器类
查询效率高,增删效率低,线程不安全。
public class ArrayListTest {
public static void main(String[] args) {
//实例化ArrayList容器
List<String> list=new ArrayList<>();
//添加元素
boolean flag = list.add("beslsd");
list.add(0,"ballislife");
System.out.println(flag);
//索引数值不能大于元素个数
list.add(1,"shen");
//循环获取集合中的所有元素
for(int i=0;i<list.size();i++){
//指定索引位置获取元素
System.out.println(list.get(i));
}
System.out.println("----");
//删除指定元素
String value = list.remove(1);
System.out.println("--------");
list.set(0,"dd");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
//清空容器
list.clear();
System.out.println(list.size());
//判断容器是否为空
boolean flag2 = list.isEmpty();
System.out.println(flag2);
//判断容器中是否存在某元素
boolean flag3 = list.contains("ss");
System.out.println(flag3);
list.add(0,"ss");
list.add(1,"dsf");
//查找容器中元素所在位置
int index1 = list.indexOf("ss");
System.out.println(index1);
int index2 = list.lastIndexOf("dsf");
System.out.println(index2);
System.out.println("将Arraylist转为Object[]");
//但是不能将转换的数组做强制类型转换
Object[] arr = list.toArray();
for(int i=0;i< arr.length;i++){
String str=(String) arr[i];
System.out.println(str);
}
System.out.println("将单例转为指定类型");
String[] arr2 = list.toArray(new String[list.size()]);
for(int i=0;i<arr2.length;i++){
System.out.println(arr2[i]);
}
}
}
Map
Map中不能包含重复的键,值可以重复,每个键只能对应一个值。
1、返回指定键所映射的值,如果不包含,返回null
get(Object key)
2、将指定的值和映射中指定键关联
put(K key,V value)
3、如果存在一个键的映射关系,将其从此映射中移除、
remove(Object key)
public class MapDemo {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
//添加元素
map.put("yi","monday");
map.put("er","tuesday");
map.put("san","wednesday");
System.out.println(map);
//根据指定的key获取到value
String value1 = map.get("er");
System.out.println(value1);
//根据key删除
String value2 = map.remove("er");
System.out.println(value2);
System.out.println(map);
//获取map中所有key
Set<String> keySet = map.keySet();
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext()){
//得到每一个Key
String key = iterator.next();
//通过key获取对应的value
String value = map.get(key);
System.out.println(key+"="+value);
}
}
}
String
String name="luck";
String name=new String("luck");
获取方法
1、字符串长度
int length();
2、特定位置字符
char charAt(int index)
3、特定字符位置
int indexOf(String str)
4、获取最后一个该字符位置
int lastIndexOf(int ch)
判断方法
1、是否以某字符结尾
boolean endWith(String str)
2、是否长度为0
boolean isEmpty()
3、是否相等
boolean equals(Object anObject)
转换方法
1、将字符数组转为字符串
String(char[] value)
2、将字符串转为字符数组、
char[] toCharArray()
其他方法
1、替换
String replace(char oldChar,char newChar)
2、去空格
String trim()
3、截取子串、
String substring(int beginIndex,int endIndex)
应用 求一个子串在整串出现的次数
在这里插入代码片
Set
添加规则:先查哈希值,如果有,再看equals
hashcode相同,equals方法可能不同
HashSet:无序不重复
LinkHashSet :底层使用hash算法计算存储位置,同时使用链表维护。
TreeSet:使用二叉树数据结构维护。