浏览 5610 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2012-03-02
集合框架结构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--; } } }
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-03-04
内容和你的题目有关吗?还有,那个可以用lit.add(String)方法。
|
|
返回顶楼 | |
发表时间:2012-03-05
liuyiyou 写道 内容和你的题目有关吗?还有,那个可以用lit.add(String)方法。 学习了!我正好复习一下 |
|
返回顶楼 | |
发表时间:2012-03-05
liuyiyou 写道 内容和你的题目有关吗?还有,那个可以用lit.add(String)方法。
看下一篇 gg |
|
返回顶楼 | |
发表时间:2012-03-05
crab1 写道 liuyiyou 写道 内容和你的题目有关吗?还有,那个可以用lit.add(String)方法。
看下一篇 gg 还真看不出 |
|
返回顶楼 | |
发表时间:2012-03-05
crab1 写道 liuyiyou 写道 内容和你的题目有关吗?还有,那个可以用lit.add(String)方法。
看下一篇 gg 还是没看出来。你的题目说,“一般认为,Set与List重要区别是,Set存储的数据中没有重复的元素,而List中可以存储重复的元素。实际上,并非如此” 我想说的是,你没有提出反例来证明你说的话是对的。至少你得写个Set的类,并且在里面放入重复的元素。 不过我可没说你程序写的不好!程序不错。特别是第二个! |
|
返回顶楼 | |
发表时间:2012-03-05
liuyiyou 写道 crab1 写道 liuyiyou 写道 内容和你的题目有关吗?还有,那个可以用lit.add(String)方法。
看下一篇 gg 还是没看出来。你的题目说,“一般认为,Set与List重要区别是,Set存储的数据中没有重复的元素,而List中可以存储重复的元素。实际上,并非如此” 我想说的是,你没有提出反例来证明你说的话是对的。至少你得写个Set的类,并且在里面放入重复的元素。 不过我可没说你程序写的不好!程序不错。特别是第二个! 我懂你的意思。我是说看我博客里的下一篇文章,【奇怪的HashSet 和变换后的TreeSet】。这篇文章里还有代码 |
|
返回顶楼 | |
发表时间:2012-03-05
crab1 写道 liuyiyou 写道 crab1 写道 liuyiyou 写道 内容和你的题目有关吗?还有,那个可以用lit.add(String)方法。
看下一篇 gg 还是没看出来。你的题目说,“一般认为,Set与List重要区别是,Set存储的数据中没有重复的元素,而List中可以存储重复的元素。实际上,并非如此” 我想说的是,你没有提出反例来证明你说的话是对的。至少你得写个Set的类,并且在里面放入重复的元素。 不过我可没说你程序写的不好!程序不错。特别是第二个! 我懂你的意思。我是说看我博客里的下一篇文章,【奇怪的HashSet 和变换后的TreeSet】。这篇文章里还有代码 额,失误了 ,看看。我还以为是要我看下一个代码呢! |
|
返回顶楼 | |
发表时间:2012-03-06
还是没看出来。你的题目说,“一般认为,Set与List重要区别是,Set存储的数据中没有重复的元素,而List中可以存储重复的元素。实际上,并非如此”
我想说的是,你没有提出反例来证明你说的话是对的。至少你得写个Set的类,并且在里面放入重复的元素。 不过我可没说你程序写的不好!程序不错。特别是第二个! |
|
返回顶楼 | |