`
crab1
  • 浏览: 4586 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

Java基础 笔记整理一:集合Set,List以及集合Map 第一部分

阅读更多

集合框架结构

Collectioin集合中有2个子集和,分别是Set和List。一般认为,Set与List重要区别是,Set存储的数据中没有重复的元素,而List中可以存储重复的元素。实际上,并非如此。下面举几个实例。

先看List(实现类有ArrayList,LinkedList,Stack)。

import java.util.*;
public class TestList {
	public static void main(String[] args) {

		String[] strs = new String[] { "IBM", "Micro", "Oracle" };
		// ArrayList相当于一个数组,不同的是它所存储的数据的可以为对象
		List<String> list = new ArrayList<String>();

		// 向list中添加数据,调用add()
		for (String str : strs) {
			list.add(str);
		}
		// 通过调用get()函数来依次方法每个元素
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i) + " ");
		}
		System.out.println();
		// 下面代码相当于获取list中的子串
		List<String> list2 = list.subList(0, 2);
		for (int i = 0; i < list2.size(); i++) {
			System.out.print(list2.get(i) + " ");
		}
		// 下面通过迭代话来方法list当中的元素
		ListIterator<String> lit = list.listIterator();
		System.out.println();

		// 同样是访问list当中的元素
		while (lit.hasNext()) {
			System.out.print(lit.next() + " ");

		}
		// 注意:lit.add("Xindian");通过该种方法向list里添加元素是添加不进去的。必须通过list.add();
		System.out.println();
		// 下面一段代码是逆向遍历list,注意:如果没有前面一段正向遍历的代码,则将不能完成逆向遍历
		while (lit.hasPrevious()) {
			System.out.print(lit.previous() + " ");

		}

	}

}

 

Stack类:

import java.util.*;
public class CardsGame {
	//功能:利用堆栈原理以及集合框架知识,实现发牌功能	
	public static void main(String[] args) {
		//一个集合数组,用于代表四个玩家
		List<String>[] players = new ArrayList[4];
		players[0] = new ArrayList<String>();
		players[1] = new ArrayList<String>();
		players[2] = new ArrayList<String>();
		players[3] = new ArrayList<String>();
		//一个堆栈,用于存放纸牌
		Stack<String> stack = new Stack<String>();
		//存牌
		//堆栈的大小有个默认大小(26),超过该空间需重新设置。
		stack.setSize(52);
		System.out.println("++++++++++++++从栈底到栈顶的纸牌顺序++++++++++++++");
		for(int j = 1; j < 5; j++){
			for(int i = 1; i < 14; i++){
					stack.push(i+"");
					//从栈底到栈顶的纸牌顺序
					System.out.print(i+" ");
			}
			System.out.println();			
		}		
		//发牌
		int turns = 0;
		for(int j = 0; j < stack.size(); j++){
			players[(turns++)%4].add(stack.pop());
			
		}
		//依次输出玩家的纸牌
		System.out.println("++++++++++++++各个玩家的所拥有的纸牌++++++++++++++");
		for(int i = 0; i < 4; i++){
				System.out.println("玩家"+(i+1)+"的纸牌:");
				
			for( int j = 0; j < 13; j++){
				System.out.print(players[i].get(j)+" ");
				
			}
			System.out.println();
			
		}
		
		

	}

}

 LinkedList类:它存储数据时相当于一个链表

import java.util.*;
public class TestList3 {
	public static void main(String... args){
		//LinkedList的数据结构相当于一个链表,通过pop()等方法可以得到每个元素,
		
		LinkedList<String> ll = new LinkedList<String>();
		
		String[] strs = new String[]{"a","b","c","d"};
		
		for(String str : strs){
			ll.add(str);
		}
		int count = ll.size();
		//用pop()方法遍历每个元素
		while( count > 0){
			System.out.println(ll.pop());
			count--;
		}
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics