Java_集合_List

List集合的特有功能

         * void add(int index,Eelement)——指定索引位置删除元素

         * E remove(int index)——删除的时候不会自动装箱,删除指定的索引,并将删除元素返回

         * E get(int index)

         * E set(int index,Eelement)——将指定位置的元素修改

List集合遍历方式

1.转成数组遍历

2.迭代器遍历

3.通过size()和get()遍历

4.高级for遍历

             案例:List集合存储学生对象并遍历

public class List_Demo {
	public static void main(String[] args) {

		demo1();
	}

	private static void demo1() {
		List list = new ArrayList();
		list.add(new Student("张三", 11));
		list.add(new Student("丫蛋", 18));
		list.add(new Student("狗剩", 20));
		// 方式一:普通for遍历
		for (int i = 0; i < list.size(); i++) {
			Student s = (Student) list.get(i);
			System.out.println(s.getName() + ":" + s.getAge());
		}
		System.out.println("----------------------------");
		// 方式二:迭代器进行遍历
		Iterator it = list.iterator();
		while (it.hasNext()) {
			Student s = (Student) it.next();
			System.out.println(s.getName() + ":" + s.getAge());

		}
		System.out.println("----------------------------");
		//方式三:增强for遍历
		for(Object obj :list){
			Student s  = (Student) obj;
			System.out.println(s.getName() + ":" + s.getAge());
		}

	}
}

集合案例

需求:判断里面有没有"world"这个元素,如果有,我就添加一个"javaee"元素

public class List_Demo {
	public static void main(String[] args) {
		List list = new ArrayList();
		list.add("a");
		list.add("b");
		list.add("c");
		list.add("world");
		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)){
				lit.add("javaee");//遍历的同时在增加元素并修改
			}
		}
		System.out.println(list);
	}
}

案例总结:

           容器中添加了五个元素,迭代器知道,但是如果在while循环中在添加元素,迭代器就不知道了,注意:在Iterator中只有判断hasNext()、取出next()、删除remove()方法。

ListIterator(List集合中特有的迭代器)

* booleanhasNext()是否有下一个

* booleanhasPrevious()是否有前一个

* Object next()返回下一个元素

* Object previous();返回上一个元素

Vector特有功能

     * public void addElement(Eobj)

     * public E elementAt(intindex)

     * public Enumerationelements()

Vector的迭代:

<span style="white-space:pre">			</span>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:

                             底层数据结构是数组,查询快,增删慢。

                             线程安全,效率低

           LinkedList:

                             底层数据结构是链表,查询慢,增删快。

                             线程不安全,效率高。

Vector和ArrayList的区别:

                    Vector是线程安全的,效率低

                    ArrayList是线程不安全的,效率高

ArrayList和LinkList的区别:

                    ArrayList底层数据结构是数组,查询和修改快

                    LinkedList底层数据结构是链表,增和删比较快,查询和修改比较慢

                    共同点:线程都是不安全的

我们到底用谁?

           查询多用ArrayList

           增删多用LinkedList

           如果都多ArrayList


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值