java常用的数据结构及其遍历方法

秃头第一步,开始写博客

ArrayList

package dataStructure;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ArrayListTest {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		list.add("拉菲");
		list.add("光辉");
		list.add("企业");
		System.out.println(list.size());
		
		//For-Each遍历List
		for (String str : list) {
			System.out.print(str+" ");
		}
		
		//把链表变为数组相关的内容进行遍历
		String[] strArray = new String[list.size()];
		list.toArray(strArray);
		System.out.println("\n"+strArray.length);
		for (int i = 0; i < strArray.length ; i++) {
			System.out.print(strArray[i]+" ");
		}
		
		//迭代器进行遍历
		System.out.println("\n"+list.size());
		//该方法可以不用担心在遍历的过程中会超出集合的长度
		Iterator<String> ite = list.iterator();
		while (ite.hasNext()) {
			System.out.print(ite.next()+" ");

		}
	}

}

BitSet

package dataStructure;

import java.util.BitSet;

/*
 * 位集合类实现了一组可以单独设置和清除的位或标志。
该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一"位",然后对位进行适当的设置或清除,就可以对布尔值进行操作了。
*/
public class BitSetDemo {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		/*
		 * 第一个构造方法创建一个默认的对象:
		 * BitSet()
		 * 第二个方法允许用户指定初始大小。所有位初始化为0。
		 * BitSet(int size)
		 */
		BitSet bits1 = new BitSet(16);
		BitSet bits2 = new BitSet(16);
		System.out.println(bits1+"\n"+bits2);
		
		for(int i=0;i<16;i++) {
			if((i%2)==0) bits1.set(i);
			if((i%2)!=0) bits2.set(i);//将指定索引处的位设置为 true
		}
		System.out.println(bits1+"\n"+bits2);
		
		bits2.and(bits1);
		System.out.println(bits1+"\n"+bits2);
		
		bits2.or(bits1);
		System.out.println(bits1+"\n"+bits2);
		
		bits2.xor(bits1);
		System.out.println(bits1+"\n"+bits2);
		
	}

}

Enumeration

package dataStructure;

import java.util.Enumeration;
import java.util.Vector;

/*枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。*/
public class EnumerationTester {
	public static void main(String[] args) {
		Enumeration<String> days;
		
		Vector<String> dayNames = new Vector<String>();
		
		dayNames.add("one");
		dayNames.add("two");
		dayNames.add("three");
		
		days = dayNames.elements();
		
		while(days.hasMoreElements()) {
			System.out.println(days.nextElement());
		}

	}
}

Map

package dataStructure;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class MapTest {
	public static void main(String[] args) {
		Map<String, String> map = new HashMap<String, String>();
		map.put("1", "欧根");
		map.put("2", "贝尔");
		map.put("3", "爱宕");
		
		//普遍使用,二次取值
		System.out.println("通过Map.keySet遍历key和value: ");
		for (String key : map.keySet()) {
			System.out.println("key= "+key+ " and value= "+map.get(key));
		}
		
		//第二种
		System.out.println("通过Map.entrySet使用iterator遍历key和value: ");
		Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
		while(it.hasNext()) {
			Map.Entry<String, String> entry =it.next();
			System.out.println("key= "+ entry.getKey() + " and value= "+entry.getValue());
		}
		
		//推荐,尤其容量大时
		System.out.println("通过Map.entrySet遍历key和value");
		for (Map.Entry<String, String> entry: map.entrySet()) {
			System.out.println("key= "+entry.getKey()+" and value= "+entry.getValue());
		}
		
		//第四种
		System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
		for (String v : map.values()) {
			System.out.println("value= "+v);
		}
	}

}

Stack

package dataStructure;

import java.util.EmptyStackException;
import java.util.Stack;

/*栈(Stack)实现了一个后进先出(LIFO)的数据结构。
你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。
当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。*/

/*栈是Vector的一个子类,它实现了一个标准的后进先出的栈。
堆栈只定义了默认构造函数,用来创建一个空栈。 
堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。
Stack()*/

public class StackDemo {
	static void showpush(Stack<Integer> st, int a) {
		st.push(new Integer(a));
		System.out.println("push( "+ a+ " )");
		System.out.println("stack: "+st);
	}
	
	static void showpop(Stack<Integer> st) {
		System.out.println("pop -> ");
		Integer a = (Integer) st.pop();
		System.out.println(a);
		System.out.println("stack: "+st);
	}
	public static void main(String[] args) {
		Stack<Integer> st = new Stack<Integer>();
		System.out.println("stack: "+st);
		showpush(st, 42);
		showpush(st, 66);
		showpush(st, 99);
		showpop(st);
		showpop(st);
		showpop(st);
		try {
			System.out.println("异常");
			showpop(st);
		}catch (EmptyStackException e) {
			// TODO: handle exception
			System.out.println("空栈");
		}
	}
}

Vector

package dataStructure;

import java.util.Enumeration;
import java.util.Vector;

/*
 * 向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。、
 * 和数组一样,Vector对象的元素也能通过索引访问。
 * Vector 类实现了一个动态数组。和 ArrayList 很相似,但是两者是不同的:
Vector 是同步访问的。
Vector 包含了许多传统的方法,这些方法不属于集合框架。
Vector 主要用在事先不知道数组的大小,或者只是需要一个可以改变大小的数组的情况。
*/
/*
第一种构造方法创建一个默认的向量,默认大小为 10:
Vector()
第二种构造方法创建指定大小的向量。
Vector(int size)
第三种构造方法创建指定大小的向量,并且增量用 incr 指定。增量表示向量每次增加的元素数目。
Vector(int size,int incr)
第四种构造方法创建一个包含集合 c 元素的向量:
Vector(Collection c)
*/
public class VectorDemo {
	public static void main(String[] args) {
		
		Vector v = new Vector(3,2);
		System.out.println("返回此向量中的组件数: "+v.size());
		System.out.println("返回此向量的当前容量: "+v.capacity());
		
		v.addElement(new Integer(1));//将指定的组件添加到此向量的末尾,将其大小增加 1。
		v.addElement(new Integer(2));
		v.addElement(new Integer(3));
		v.addElement(new Integer(4));
		System.out.println("添上组件后当前容量1: "+v.capacity());
		
		v.addElement(new Double(5.45));
		System.out.println("添上组件后当前容量2: "+v.capacity());
		
		v.addElement(new Double(6.08));
		v.addElement(new Integer(7));
		System.out.println("添上组件后当前容量3: "+v.capacity());
		
		v.addElement(new Float(9.4));
	    v.addElement(new Integer(10));
	    System.out.println("添上组件后当前容量4: "+v.capacity());
	    
	    v.addElement(new Integer(11));
	    v.addElement(new Integer(12));
	    System.out.println("第一个元素: "+(Integer)v.firstElement());
	    System.out.println("末一位元素: "+(Integer)v.lastElement());
	    
	    if(v.contains(new Integer(3)))
	    	System.out.println("v包含3");
	    
	    //遍历向量v
	    Enumeration vEnum = v.elements();
	    System.out.println("向量中的元素: ");
	    while (vEnum.hasMoreElements()) {
			System.out.print(vEnum.nextElement()+"  ");
			
		}
	    }

}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java Map 遍历方法 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); Object value = entry.getValue(); } Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); Object value = entry.getValue(); } JDK1.5,应用新特性For-Each循环 Java代码 Map m = new HashMap(); for(Object o : map.keySet()){ map.get(o); } Map m = new HashMap(); for(Object o : map.keySet()){ map.get(o); } 返回的 set 的每个元素都是一个 Map.Entry 类型。 private Hashtable<String, String> emails = new Hashtable<String, String>(); 另外 我们可以先把hashMap 转为集合Collection,再迭代输出,不过得到的对象 //方法一: 用entrySet() Java代码 Iterator it = emails.entrySet().iterator(); while(it.hasNext()){ Map.Entry m=(Map.Entry)it.next(); logger.info("email-" + m.getKey() + ":" + m.getValue()); } Iterator it = emails.entrySet().iterator(); while(it.hasNext()){ Map.Entry m=(Map.Entry)it.next(); logger.info("email-" + m.getKey() + ":" + m.getValue()); } // 方法二:jdk1.5支持,用entrySet()和For-Each循环() Java代码 for (Map.Entry<String, String> m : emails.entrySet()) { logger.info("email-" + m.getKey() + ":" + m.getValue()); } for (Map.Entry<String, String> m : emails.entrySet()) { logger.info("email-" + m.getKey() + ":" + m.getValue()); } // 方法三:用keySet() Java代码 Iterator it = emails.keySet().iterator(); while (it.hasNext()){ String key; key=(String)it.next(); logger.info("email-" + key + ":" + emails.get(key)); } Iterator it = emails.keySet().iterator(); while (it.hasNext()){ String key; key=(String)it.next(); logger.info("email-" + key + ":" + emails.get(key)); } // 方法五:jdk1.5支持,用keySEt()和For-Each循环 Java代码 for(Object m: emails.keySet()){ logger.info("email-" + m+ ":" + emails.get(m)); } Map aa = new HashMap(); aa.put("tmp1", new Object()); //追加 替换用同样的函数. aa.remove("temp1"); //删除 for (Iterator i = aa.values().iterator(); i.hasNext(); ) { Object temp = i.next(); } //遍历 for(Object m: emails.keySet()){ logger.info("email-" + m+ ":" + emails.get(m)); } Map aa = new HashMap(); aa.put("tmp1", new Object()); //追加 替换用同样的函数. aa.remove("temp1"); //删除 for (Iterator i = aa.values().iterator(); i.hasNext(); ) { Object temp = i.next(); } //遍历 来个完整的,包含TreeSet的元素内部排序的 Java代码 public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); HashMap<Object,Object> hash = new HashMap<Object,Object>(); TreeMap<Object,Object> treeMap = new TreeMap<Object,Object>(); list.add("a"); list.add("b"); list.add("c"); hash.put(3, 3); hash.put(4, 4); hash.put(5, 5); hash.put(6, 6); hash.put(1, 1); hash.put(2, 2); treeMap.put(1, 1); treeMap.put(2, 2); treeMap.put(3, 3); treeMap.put(4, 4); treeMap.put(5, 5); treeMap.put(6, 6); //list遍历 for(String m: list){ System.out.println(m); } // hashmap entrySet() 遍历 for(Map.Entry<Object,Object> m: hash.entrySet()){ System.out.println(m.getKey()+"---"+m.getValue()); } //hashmap keySet() 遍历 for(Object m: hash.keySet()){ System.out.println(m+"---"+hash.get(m)); } // treemap keySet()遍历 for(Object m: treeMap.keySet()){ System.out.println(m+"---"+treeMap.get(m)); } }

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值