Java基础 札记整理一:集合Set,List以及集合Map 第一部分
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--; } } }