黑马程序员——java集合框架——List接口

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


java集合框架——List

简介:集合框架:一组专门用来存储其他对象的类(对象容器类)和接口的设计结构,统称为集合框架。而这组类的功能就是实现各种方式的数据存储。
Collection接口:1、Set接口:存放的元素是无序并且不包含重复元素
              2、List接口:存放的元素是有序并且允许有重复元素

注:     这2种接口中的元素:即对象引用,元素类型都为Object

     这2种接口中的重复:是指两个对象用过equals判断相等

       这2种接口中的有序:是指元素存入的顺序与取出的顺序相同


List接口三种实现类:

1、ArrayList类:
是对象引用的一个变长数组,能够动态的添加或减少其大小
注:对于使用索引取出元素有较高的效率,能够利用索引快速定位。但是对元素的删除和插入速度较慢,
因为使用的数组,需要移动后面的元素以调整索引顺序

public class ListDemo {

	public static void main(String[] args) {
		Collection c1 = new ArrayList();// 实例化一个具体的子类对象
		for (int i = 0; i < 5; i++) {
			c1.add(new Integer(i));
		}// 循环添加10个整型类对象
		System.out.println("c1:" + c1);
		Collection c2 = new ArrayList();
		c2.addAll(c1);// 将集合c1添加到c2集合对象中的操作
		c2.remove(new Integer(3));// 删除
		c2.add("haha");// 添加
		System.out.println("c2:" + c2);
		Iterator it = c2.iterator();
		while (it.hasNext()) {
			Object obj = it.next();
			System.out.println("Iterator遍历c2" + obj+"\t");

		}

	}

}

结果如图:



2、LinkedList类:
提供了一个链接列表数据结构,LinkedList容器类通过连接指针来关联前后两个元素
注:因为LinkedList是使用双向链表实现的容器,所以频繁的插入坏人删除元素,使用LinkedList类效率较高,适合实现栈和队列

public final class LinkedListDemo {

	public static void main(String[] args) {
		LinkedList linklst = new LinkedList();
		linklst.add("F");
		linklst.add("B");
		linklst.add("D");
		linklst.add("E");
		linklst.add("C");
		System.out.println("显示初始化后linklst的内容:" + linklst);
		linklst.addLast("Z");
		linklst.addFirst("A0");
		linklst.add(1, "A1");
		System.err.println("显示添加操作后linklst的内容:" + linklst);
		// 执行删除F元素操作
		linklst.remove("F");
		// 执行删除第二个元素
		linklst.remove(2);
		System.out.println("显示删除操作后linklst的内容:" + linklst);
		// 执行删除第一个元素
		linklst.removeFirst();
		// 执行删除最后一个元素
		linklst.removeLast();
		System.out.println("显示删除操作后linklst的内容:" + linklst);
		// 获取第二个元素
		Object val = linklst.get(2);
		// 修改内容
		linklst.set(2, (String) val + "Changed");
		System.out.println("显示修改操作后linklst的内容:" + linklst);

	}

}

结果如图所示:



3、Vector类:
提供了实现可增长数组的功能。
注:Vector类的大多数操作和ArrayList类相同,区别在于Vector类是线程同步的。


public class VectorDemo {

	public static void main(String[] args) {
		Vector v = new Vector();
		v.add("one");
		v.add("two");
		v.add("three");
		System.out.println("显示向量初始值" + v.toString());
		v.insertElementAt("zero", 0);
		v.insertElementAt("oop", 3);
		System.out.println("显示插入元素后向量值" + v.toString());
		v.setElementAt("three", 3);
		v.setElementAt("four", 4);
		System.out.println("显示修改元素后向量值" + v.toString());
		v.removeAllElements();
		System.out.println("显示删除元素后向量值" + v.toString());

	}

}

结果如图:



注:java的集合与数组的区别在于:在创建java数组时,必须明确指定数组的长度,数组一旦创建,其长度就不能被改变。为了使程序能方便的存储、检索和操纵数目不固定

的一组数据,JDK类库提供了java集合,所以java集合类都位于java.util包中。另外java集合中不能存放基本类型数据,而只能存放对象的引用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值