JAVA高级
Collection
List
ArrayList
-
简介:ArrayList是一个类似于链表的类,可以合适的代替数组的种种操作,例如在不知道所需数组的大小,又不能用动态内存分配的时候,就可以使用ArrayList,而且该类中的:添加,删除,替换,清空等方法都非常便捷,非常适合初学者的使用。
-
方法:
- add(E e)添加一个元素e;
- add(int a, E e)在列表a的位置添加一个元素e;
- remove(int a)删除a位置的元素;
- remove(E e)在e第一次出现的位置把它删除;
- contains(Object o) 如果此列表中包含指定的元素,则返回 true;-
get(int index) 返回此列表中指定位置上的元素;
-
indexOf(Object o)返回此列表中第一次出现的元素o;
-
lastIndexOf(Object o)返回此列表中最后一次出现的元素o;
-
set(a, b)用元素b来替换位置a上的元素;
-
toArray()将列表中的每一个位置上的元素都放在一个数组中对应位置,形成一个新的数组;
-
clear()清空列表中的元素;
-
isEmpty()如果列表为空,就返回true;
-
removeRange(a,b)删除列表索引a到b位置之间的所有元素 tip:我试了在idea里不好使为什么
-
代码实例:
-
不知道为什么这里不写东西就不是代码块
import java.util.ArrayLisy;
public class chapter01 {
public static void main(String[] args) {
ArrayList alt = new ArrayList();
System.out.println("开始没有add的样子: "+alt);
alt.add("北京");
alt.add("西安");
alt.add("洛阳");
alt.add("南京");
alt.add("许昌");
alt.add("长沙");
alt.add("洛阳");
System.out.println("看看add之后的结果: "+alt);
System.out.println("测试size: "+alt.size());
System.out.println("测试contains: "+alt.contains("北京"));
System.out.println("用get获取指定位置的值: "+alt.get(1));
System.out.println("用indexOf返回指定元素的索引: "+alt.indexOf("洛阳"));
System.out.println("用lastindexOf返回指定元素最后一次出现: "+alt.lastIndexOf("洛阳"));
alt.remove(1);
System.out.println("测试remove后的列表: "+alt);
alt.remove("南京");
System.out.println("测试remove指定元素后的列表: "+alt);
//alt.removeRange(1,5);这个为什么不能用
alt.set(3,"金陵城");
System.out.println("用set替换后的列表: "+alt);
Object[] obj = alt.toArray();
for(Object obj1 : obj){
System.out.println("用foreach输出toArray得到的数组: "+obj1);
}
alt.clear();
System.out.println("这是alt.clear()后的列表: "+alt);
System.out.println("看看alt.isEmpty的作用: "+alt.isEmpty());
}
}
`
- 这是输出结果:
开始没有add的样子: []
看看add之后的结果: [北京, 西安, 洛阳, 南京, 许昌, 长沙, 洛阳]
测试size: 7
测试contains: true
用get获取指定位置的值: 西安
用indexOf返回指定元素的索引: 2
用lastindexOf返回指定元素最后一次出现: 6
测试remove后的列表: [北京, 洛阳, 南京, 许昌, 长沙, 洛阳]
测试remove指定元素后的列表: [北京, 洛阳, 许昌, 长沙, 洛阳]
用set替换后的列表: [北京, 洛阳, 许昌, 金陵城, 洛阳]
用foreach输出toArray得到的数组: 北京
用foreach输出toArray得到的数组: 洛阳
用foreach输出toArray得到的数组: 许昌
用foreach输出toArray得到的数组: 金陵城
用foreach输出toArray得到的数组: 洛阳
这是alt.clear()后的列表: []
看看alt.isEmpty的作用: true
进程已结束,退出代码0
LinkedList
-
简介:LinkedList个人感觉和ArrayList的差别不是很大,而且和ArrayList类中的各个方法高度相似。(个人观点,学的浅)
-
方法:
-
push(a)将a元素推入表中,注意:push()和add()方法并不相同,push()是将每一个元素都放在表头的位置,并将之前的表头往后挤。
举个例子:
push(a);
push(b);
push(c );
这样得到的表,我们以为是a,b,c实际是c,b,a; -
peek()获取但不移除第一个元素;
-
peekFirst()获取但不移除第一个元素,并且如果此表为空,返回null
-
peekLast()获取但不移除最后一个元素,如果…
-
pool()获取并移除第一个元素;
-
poolFirst()获取并移除第一个元素,如果…
-
poolLast()获取并移除最后一个…
-
pop():API中的描述是“从此列表所表示的堆栈处弹出一个元素。”但是我觉得功能和pool是一样的,他的返回值就是你弹出的那个元素,弹出就等于是返回这个元素的值,然后再移除它。
-
剩下诸如:add(),remove(),size(),get()这些方法都和之前的ArrayList基本相同。
-
List总结:
- ArrayList和LinkedList的区别:
- ArrayList实现了List接口,用于表示长度可变的数组列表,是不同步的,适合在单线程环境下使用。
- LinkedList底层采用双向链表实现,方便插入和删除元素,适用于频繁进行元素插入与删除。
一些新学的方法:
- for each:增强型for循环
-
使用方式:
int[] arr = new int[10];
for( int a : arr ) {//意思就是把数组arr中的每一个元素都放在a中,再输出
System.out.println(a);
} -
使用场景:用于不知道数组大小的情况(百度来的,这种时候在后面加.length不是更方便吗?)
-
- 强制转化的时候,貌似只能进行几个特定的转化,不然会报错?留下这个问题,下次学习的时候解决,好像今天的案例里面强转Integer就出问题了。