集合内容有点多,都多在各种类推的方法上了,就如同数学公式一样,由上式推导出下式,还捎带上其它诱因,发现不一般的算法内容和形参结果。。。转行人工智能算法工程师挺不错的啊。
- List集合的特有功能概述
- void add(int index,E element)
- E remove(int index)
- E get(int index) 返回列表中指定位置的元素。
- E set(int index,Eelement)用指定元素替换列表中指定位置的元素
先有List后有天。。。
import java.util.ArrayList;
import java.util.List;
public class Demo1_List {
public static void main(String[] args) {
//demo1();
//demo2();
//demo3();
//demo4();
demo5();
}
private static void demo5() {
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.set(1, "z"); //将指定位置的元素修改
System.out.println(list);
}
public static void demo4() {
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
//Object obj1 = list.get(2);
//System.out.println(obj1);
//通过索引遍历List集合
for(int i = 0;i < list.size(); i++) {
System.out.println(list.get(i));
}
}
public static void demo3() {
List list = new ArrayList();
list.add(111);
list.add(222);
list.add(333);
list.remove(111); //删除的时候不会自动装箱,把111当作索引
System.out.println(list);
}
public static void demo2() {
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
Object obj = list.remove(1); //通过索引删除元素,将被删除的元素返回
System.out.println(obj);
System.out.println(list);
}
public static void demo1() {
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c");
list.add("d");
list.add(4, "f"); //index<=size并且index>=0都不会报异常
//list.add(1,"e");
//list.add(10, "z"); //java.lang.IndexOutOfBoundsException,当存储时使用不存在的索引时
System.out.println(list);
}
}
还有size()和get()方法,操作一些数据时会出现ConcurrentModificationException异常,实际解决一下
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Demo2_List {
/**
** A:案例演示
* 需求:我有一个集合,请问,我想判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素,请写代码实现。
*/
public static void main(String[] args) {
List list = new ArrayList();
list.add("a"); //Object obj = new String();
list.add("b");
list.add("world");
list.add("c");
list.add("d");
list.add("e");
/*Iterator it = list.iterator(); //获取迭代器
while(it.hasNext()) { //判断集合中是否有元素
String str = (String)it.next(); //向下转型
if("world".equals(str)) {
list.add("javaee"); //遍历的同时在增加元素,并发修改ConcurrentModificationException
}
}*/
ListIterator lit = list.listIterator(); //获取迭代器(List集合特有的)
while(lit.hasNext()) {
String str = (String)lit.next(); //向下转型
if("world".equals(str)) {
//list.add("javaee"); //遍历的同时在增加元素,并发修改ConcurrentModificationException
lit.add("javaee");//在迭代的过程中如果使用集合的add方法,是会报错的,可以使用迭代器的add方法
}
}
System.out.println(list);
}
}
ListIterator,了解一下就好。
- boolean hasNext()是否有下一个
- boolean hasPrevious()是否有前一个
- Object next()返回下一个元素
- Object previous();返回上一个元素
Vector类概述
- Vector类特有功能
- public void addElement(E obj)
- public E elementAt(int index)
- public Enumeration elements()
v可以说是元老级的人物了,但人老了。。。还是讲一讲历史吧。
Vector的迭代
Vector v = new Vector(); //创建集合对象,List的子类
v.addElement(“a”);
v.addElement(“b”);
v.addElement(“c”);
v.addElement(“d”);
//Vector迭代
Enumeration en = v.elements(); //获取枚举
while(en.hasMoreElements()) { //判断集合中是否有元素
System.out.println(en.nextElement());//获取集合中的元素
- List的三个子类的特点
-
ArrayList:
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector:
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
Vector相对ArrayList查询慢(线程安全的)
Vector相对LinkedList增删慢(数组结构)
LinkedList:
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。Vector和ArrayList的区别
Vector是线程安全的,效率低
ArrayList是线程不安全的,效率高
共同点:都是数组实现的
ArrayList和LinkedList的区别
ArrayList底层是数组结构,查询和修改快
LinkedList底层是链表结构的,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的
-
好了
- LinkedList类特有功能
- public void addFirst(E e)及addLast(E e)
- public E getFirst()及getLast()
- public E removeFirst()及public E removeLast()
- public E get(int index);
一个案例结束
import java.util.LinkedList;
public class Demo3_LinkedList {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.addFirst("a");
list.addFirst("b");
list.addFirst("c");
list.addFirst("d");
list.addLast("e");
//System.out.println(list.getFirst());
//System.out.println(list.getLast());
//System.out.println(list.removeFirst());
//System.out.println(list.removeLast());
System.out.println(list.get(1));
System.out.println(list);
}
/*dcbae*/
}
ps:每日一词
御街行·又见雕栏玉砌
红尘粉点雕栏砌,玉杯转、盘节碎。窗中花影淡吹稀,桌上围棋书记。仙山曾看,故江神去,长送人千里。
尊杯酒友歌嬉戏,醉中梦、归无计。灯残光暗剑通明,弹指云间烟避。东风细细,吹来无力,犹道眉滋味。