容器
对于容器的要求:
首先,可以承载若干个字符串,每个字符串分开保存(连续还是离散,没有关系)
1.要求求长方法,求长方法就是求出容器可以放多少个字符串
2.要有基本的定位方法,通过角标来找到我放置的第几个String元素
3.要求替换方法,可以通过给出角标,和替换的值,来替换掉某个位置上的值要求放置一个元素到这个容器里面的方法,防止进来这元素以后这个元素以后这个元素需要给他一个角标
4.要求放置一个元素到这个容器里面的方法,放置进来这个元素以后这个元素需要给他一个角标
5.可以通过角标来删除一个元素,删除以后,后面的角标全部往前移动一位
public class StringADT {
public String[] elements = new String[5];
private int size = 0;
public int length() {
return 0;
}
public void add(String entry) {
if(size >= elements.length) {
elements = Arrays.copyOf(elements, elements.length + 10);
}
elements[size] = entry;
size++;
}
public String get(int index) {
if(index >= size) {
return "角标超出界限";
}
return elements[index];
}
public void set(int index, String entry) {
if(index >= size || index < 0) {
return;
}
elements[index] = entry;
}
public void delete(int index) {
if(index >= size || index < 0) {
return;
}
String[] tempElement = new String[elements.length];
int count = 0;
for(int i = 0; i < elements.length; i++) {
if(i == index) {
continue;
}
tempElement[count] = elements[i];
count++;
}
elements = tempElement;
size--;
}
public void test() {
System.out.println(Arrays.toString(elements));
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RJoZDB6r-1692620320604)(E:\学习笔记\容器分类.png)]
ArrayList
ArrayList是List的实现类,其中的<>是叫做泛型
如果我们想要List,不能直接创建对象,但是可以找到JAVA提供的实现类型
泛型:
数组的特点是大小固定的放置相同类型元素的容器
使用容器时,放置的内容必须相似
//List容器的特点
//1.可以放置相同的元素
//2.所有放置的元素都是有角标的
//3.其容量大小是可变的
ArrayList<String> list = new ArrayList<>();
//添加
list.add("lvjie");
list.add("14");
list.add("zs");
//改
list.set(0,"haha");
//删
list.remove(0);
//查
list.get(0);
//查看长度
lsit.size();
//清除完
list.clear();
//定位
list.indexOf("14");
//是否包含当前元素
boolean falg = list.contains();
//容器是否为空
boolean falg1 = list.isEmpty();
依次向ArrayList入33个数据,问,当前ArrayList底层容量是多少? 扩容了几次?
在此基础上再放一个,问容量是多少?扩容了几次?(明白容量和大小区别)
初始化的时候,容量是0 但是默认初始化容量是10;
当放第一个值的时候,扩容1次 从0->10;
当放第11个值的时候,扩容1次,从10->15;
当放第16个值的时候,扩容1次;从15->22;
当放第23个值的时候,扩容1次,从22->33;
所以第一问是基础问题,扩容了4次,容量现在是33;
再放一个就是第34个值,扩容1次;容量现在是49
所以容量是49,一共扩容了5次,