java:List、set、map

List、set是继承collection接口。

List、map、set结构如下图:

collection  

  |-List:元素有放入顺序,元素可以重复。

 ||-LinkList:底层是基于链表实现的,每一个元素本身的内存地址的同时还存储下一个元素的地址,链表的增加删除快,查找慢。

 ||-ArrayList:属于非线程安全的,效率高。

||-Vector 属于线程安全的,效率低。

 |_set:元素没有放入顺序,元素不可重复,元素虽然是无无放入顺序但是元素在set中的位置是有该元素Hashcode决定的,位置其实是固定的。

set的两个实现类:

 HashSet:底层是HashMap实现的。

LinkHashSet:


 map:元素键值对存储,没有放入顺序。

|-Hashtable:线程安全的,效率低,不支持null。

|-HashMap:非线程安全的,高效率,支持null。

WeakHashMap:

自认为三者最大的关系在于:List是用来处理序列的,set是处理集的,无序不重复。map存储键值对。

用代码说明List、set、map存取元素的一些特点和差别:


/**
 * 
 */
package com.weisoft.map;
import java.awt.SystemColor;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.Set;

/**
 * @author Administrator
 * 
 */
public class HashMapTest {

	private Integer id;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	/**
	 * @param id
	 * @param name
	 * @param num
	 */
	public HashMapTest(int id, String name, int num) {

		this.id = id;
		this.name = name;
		this.num = num;

	}

	/**
	 * void
	 * 
	 */
	public HashMapTest() {

	}

	private String name;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public Integer getNum() {
		return num;
	}

	public void setNum(Integer num) {
		this.num = num;
	}

	private Integer num;

	/**
	 * List
	 * 
	 * @author Administrator
	 * @see:List
	 */
	@SuppressWarnings("unchecked")
	private void ListTe() {
		List list = new ArrayList();
		List list2 = new LinkedList();

		list.add(0, "a");
		list.add(0, "b");
		list.add(0, "c");
		list.add(0, "d");
		list.add(0, "e");

		list2.add(0, "a2");
		list2.add(0, "b2");
		list2.add(0, "c2");
		list2.add(0, "d2");
		list2.add(0, "e2");
		Iterator it = list.iterator();
		Iterator it2 = list2.iterator();
		while (it.hasNext()) {
			for (int i = 0; i < list.size(); i++) {

				System.out.println("im it " + i + it.next());
			}

		}
		while (it2.hasNext()) {
			for (int i = 0; i < list2.size(); i++) {

				System.out.println("im it2 " + i + it2.next());
			}

		}

	}

	/**
	 * map
	 * 
	 * @author Administrator
	 * @see:map
	 */

	@SuppressWarnings("unchecked")
	private void SetTe() {

		Set set = new HashSet();
		set.add("a3");
		set.add("b3");
		set.add("c3");
		set.add("d3");
		set.add("e3");

		Iterator it = set.iterator();
		while (it.hasNext()) {

			System.out.println(it.next());

		}

	}

	/**
	 * Map
	 * 
	 * @author Administrator
	 */
	private void MapTe() {

		Map<Integer, HashMapTest> map = new HashMap<Integer, HashMapTest>();
		map.put(0, new HashMapTest(1, "davint", 1));
		map.put(1, new HashMapTest(2, "ddavint", 2));
		map.put(2, new HashMapTest(3, "vint", 3));
		map.put(3, new HashMapTest(4, "davin\\t", 4));

		Set keys = map.keySet();
		Iterator it = keys.iterator();
		while (it.hasNext()) {
			Integer key = (Integer) it.next();
			HashMapTest hs = map.get(key);
			System.out.println(hs.getName() + "###" + hs.getNum());

		}

	}

	/**
	 * result
	 * 
	 * @author Administrator result
	 */
	// im it 0e
	// im it 1d
	// im it 2c
	// im it 3b
	// im it 4a
	// im it2 0e2
	// im it2 1d2
	// im it2 2c2
	// im it2 3b2
	// im it2 4a2
	// e3
	// d3
	// b3
	// a3
	// c3
	// davint###1
	// ddavint###2
	// vint###3
	// davin\t###4


	/**
	 * @author Administrator
	 * @see do everything
	 */
	public static void main(String[] args) {

		// String a = "A";
		// String b = "B";
		// String c = "C";
		// String d = "D";
		// List<String> list = new ArrayList<String>();
		//
		// list.add(a);
		// list.add(b);
		// list.add(c);
		// list.add(d);
		// list.set(0, b);//
		// list.add(1,d);
		// Iterator<String> it = list.iterator();
		// while (it.hasNext()) {
		//
		// System.out.println(it.next() + "<-->");
		//
		// }
		// list=list.subList(1, 2);
		// for (int i=0;i<list.size();i++){
		// System.out.println("suoyin"+i+":"+list.get(i));//利用get(int
		// index)方法获得指定索引位置的对象
		//			
		// }
		HashMapTest hs = new HashMapTest();
		hs.ListTe();
		hs.SetTe();
		hs.MapTe();

	}

}



            



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值