站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
JAVA集合类
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
<span style="text-align:center; border:1px solid #000; float:right; padding:6px;"><strong>导航:</strong> [[JAVA学习教程#JAVA学习教程|上一页]] | {{template:开发语言导航}}</span> <div style="clear:both;"></div> 在[[java]]里还有一类东西与数组类似,也是有着特性的一组数(或是对象),叫做集合类。我们上节课讲到了,数组的长度在创建时已经确定了,但是有时候我们事先根本不知道长度是多少啊,比如我们做[[电子商务]][[网站]]时,有个购物车[[程序]]。你总不能用数组规定,人家只能买5样东西吧。你就是把长度定为10000也不行,万一遇上个特别有钱的呢!呵呵,这只是开玩笑的。我们会使用集合类解决这个问题。<br> 集合类是放在java.util.*;这个包里。集合类存放的都是对象的引用,而非对象本身,为了说起来方便些,我们称集合中的对象就是指集合中对象的引用(reference)。引用的概念大家不会忘了吧,在前边我们讲数据类型时讲的。<br> 集合类型主要有3种:set(集)、list(列表)、map(映射)和Queue(队列)。//队列为jdk5中的加上的<br> (1) Set <br> 集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。我们知道数学上的集合也是Set这个,集合里面一定是没有重复的元素的。<br> (2)List<br> 列表(List)的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序的Set是不同的。它是链表嘛,一条链肯定有顺序这个顺序就不一定了。<br> (3)Map<br> 映射(Map),这个在java里不是地图的意思,其实地图也是映射哈。它里面的东西是键-值对(key-value)出现的,键值对是什么呢?举个例子,比如我们查字典,用部首查字法。目录那个字就是键,这个字的解释就是值。键和值成对出现。这样说可以理解吧。这也是很常用的数据结构哦。<br> (4)Queue<br> 在jdk5.0以前,通常的实现方式是使用java.util.List集合来模仿Queue.Queue的概念通过把对象添加(称为enqueuing的操作)到List的尾部(即Queue的后部)并通过从List的头部(即Queue的前部)提取对象而从 List中移除(称为dequeuing的操作)来模拟。你需要执行先进先出的动作时可以直接使用Queue接口就可以了。<br> 这4个东西,有时候功能还不太完善,需要有些子类继承它的特性。Set的子接口有TreeSet,SortedSet,List的有ArrayList等,Map里有HashMap,HashTable等,Queue里面有BlockingQueue等。我们来看看例子吧:<br> 实践: <br> Set举例<br> import java.util.*; <br> public class SetExample {<br> public static void main(String[] args) {<br> Set set = new HashSet(); //HashSet是Set的子接口<br> set.add("one");<br> set.add("second");<br> set.add("3rd");<br> set.add(new Integer(4));<br> set.add(new Float(5.0F));<br> set.add("second");<br> set.add(new Integer(4));<br> System.out.println(set);<br> }} <br> List举例:<br> import java.util.*;<br> public class ListExample {<br> public static void main(String[] args) {<br> List list = new ArrayList();<br> list.add("one");<br> list.add("second");<br> list.add("3rd");<br> list.add(new Integer(4));<br> list.add(new Float(5.0F));<br> list.add("second");<br> list.add(new Integer(4));<br> System.out.println(list);<br> }} <br> Map举例<br> import java.util.Map;<br> import java.util.HashMap;<br> import java.util.Iterator;<br> import java.io.FileReader;<br> public class MapExample {<br> public static void main(String[] args) throws java.io.FileNotFoundException {<br> Map word_count_map = new HashMap();<br> FileReader reader = new FileReader(args[0]);<br> Iterator words = new WordStreamIterator(reader);<br> while ( words.hasNext() ) {<br> String word = (String) words.next();<br> String word_lowercase = word.toLowerCase();<br> Integer frequency = (Integer)word_count_map.get(word_lowercase);<br> if ( frequency == null ) {<br> frequency = new Integer(1);<br> } else {<br> int value = frequency.intValue();<br> frequency = new Integer(value + 1);}<br> word_count_map.put(word_lowercase, frequency);<br> }<br> System.out.println(word_count_map);<br> }} <br> Queue举例:<br> import java.io.IOException;<br> import java.io.PrintStream;<br> import java.util.LinkedList;<br> import java.util.Queue;<br> public class QueueTester {<br> public Queue<String> q; //发现了一个奇怪的语法,这个尖括号是泛型声明<br> public QueueTester() {q = new LinkedList<String>();}<br> public void testFIFO(PrintStream out) throws IOException {<br> q.add("First");<br> q.add("Second");<br> q.add("Third");<br> Object o;<br> while ((o = q.poll()) != null) {<br> out.println(o);}}<br> public static void main(String[] args) {<br> QueueTester tester = new QueueTester();<br> try { tester.testFIFO(System.out);<br> } catch (IOException e) {<br> e.printStackTrace(); } }} <br> [[category:Java教程]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)
本页使用的模板:
模板:开发语言导航
(
编辑
)