「javastl容器」JAVA容器
今天给各位分享javastl容器的知识,其中也会对JAVA容器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、java 一个容器简单程序 为何编译时出现如下提示
- 2、C++ stl里面有没有类似java里面linkedlist的容器?
- 3、JAVA中有没有类似C++ STL 中MAP容器的?
- 4、STL是什么意思?
- 5、c++中的STL是不是与java中的容器是类似的东
- 6、学java有必要学STL吗
java 一个容器简单程序 为何编译时出现如下提示
import java.util.*;
public public Main() {
}
public static void main(String[] args) {
HashMap hm = new HashMap();
hm.put("1", 11);
System.out.println(hm.get("1"));
}
}
用java1.5编译时会出现:
注意:Main.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用-Xlint:unchecked 重新编译。
出现这样的警告是因为:
java1.5使用了泛型的缘故,作如下修改:
HashMap hm = new HashMap();
改成:
HashMapString, Integer hm = new HashMapString, Integer();
就可以了。
那什么叫做泛型呢?
泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。所谓泛型(Genericity),是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。STL以迭代器(Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型指针(iterators)、泛型容器(containers)以及函数对象(function objects)。STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。
敢问是否是你的jdk路径设置不正确或是其他问题所致?在我机子上运行一切正常,你检查下你的jdk设置,还有就是转到文件所在目录执行javac和java命令,参考下面文章:
==================================================
JDK安装设置环境变量
一、前言
JDK(Java Development Kit )是一切java应用程序的基础,可以说,所有的java应用程序是构建在这个之上的。它是一组API,也可以说是一些java Class。目前已经正式发布的最新版本是JDK1.3。考虑到我对linux不熟悉,而且大多数都是在MS系统下,所以,在这里我用的是win2000。
二、下载,安装
下载地址为JAVA官方站点:java.sun.com,国内也到处都是。
Windows下,直接运行.exe文件,安装到一个目录,我这里用F:\jdk13作为例子。
三、配置
桌面上选择“我的电脑”(右键)
高级
环境变量
在“系统变量”---“新建”
在变量名中输入:CLASSPATH,变量值中输入:
F:\JDK13\LIB\dt.JAR;F:\JDK13\LIB\TOOLS.JAR;F:\JDK13\BIN;然后确定;
好了,配置完了,要重新启动计算机后,环境变量才能有效的。
四、测试
(1)用文本编辑器写一个简单的java程序:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
这个例子就是著名的“Hello World”,它的功能就是显示“Hello World”。
注意:该文件名称必须为“HelloWorld.java”,大小写也区分。细心的朋友会注意到就是和public class后的名字一样的。
(2)编译:在dos命令提示符下执行:(注意大小写)
javac HelloWorld.java
如果正常的话,将生成HelloWorld.class文件。
(3)运行:在dos命令提示符下执行:(注意大小写)
java HelloWorld
这里有一个java初学者很有可能遇到的问题(不怕笑话,我也是)就是输入:
java HelloWorld.class
多了后面的.class,一定要注意,否则会出现下面的错误:
Exception in thread "main" java.lang.NoClassDefFoundError:HelloWorld/class
(本人猜想,是不是java翻译“.”的时候换成了“/”,或者是其他的本人不知道的原因)
好了,运行java HelloWorld应该会出现伟大的“Hello World”了。
到这一步,你已经成功配置好了JDK,可以开始漫长而痛苦(对于象我一样的,以前不懂java的朋友来说,可以用“痛苦”来形容,不理解的概念,不熟悉的java api...,不过,不要急,我将和大家一起慢慢入门,慢慢提高... ...)的Java过程了。
C++ stl里面有没有类似java里面linkedlist的容器?
其实C++里面类似容器的总共有4个,list,vector,map,还有一个忘了,是4个,你上网好好查一下吧,
JAVA中有没有类似C++ STL 中MAP容器的?
有,java有Map接口,然后有各种实现
HashMap、TreeMap
其中TreeMap就和stl中的map实现一样,用红黑树实现的
STL是什么意思?
什么是STL呢?STL就是Standard
Template
Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。
STL的目的是标准化组件,这样就不用重新开发,可以使用现成的组件。STL现在是C++的一部分,因此不用额外安装什麽。它被内建在你的编译器之内。因为STL的list是一个简单的容器,所以我打算从它开始介绍STL如何使用。如果你懂得了这个概念,其他的就都没有问题了。另外,list容器是相当简单的,我们会看到这一点。
在本文中我们将会看到如何定义和初始化一个list,计算它的元素的数量,从一个list里查找元素,删除元素,和一些其他的操作。要作到这些,我们将会讨论两个不同的算法,STL通用算法都是可以操作不止一个容器的,而list的成员函数是list容器专有的操作。
这是三类主要的STL组件的简明纲要。STL容器可以保存对象,内建对象和类对象。它们会安全的保存对象,并定义我们能够操作的这个对象的接口。放在蛋架上的鸡蛋不会滚到桌上。它们很安全。因此,在STL容器中的对象也很安全。我知道这个比喻听起来很老土,但是它很正确。
STL算法是标准算法,我们可以把它们应用在那些容器中的对象上。这些算法都有很著名的执行特性。它们可以给对象排序,删除它们,给它们记数,比较,找出特殊的对象,把它们合并到另一个容器中,以及执行其他有用的操作。
还有一种解释:
什么是STL?
STL代表科学和技术素养,但这个短语的背后隐藏的重要意义是对所有人而言。
STL也许可以简单地视为一个哲学观点,但决不仅仅如此。它包括了一套完整的教育方法,这个方法包含生活中的科学技术和不仅是学校师生的还有普通市民和政治家在内的所有人的思想。
为了达到普及科学技术的要求,科学技术的排它性和教师\科学家对科学教育的态度要根本转变。
课堂中的科学教育要从教师为主导、以教学大纲为核心的教育方式中解脱出来,代之以学生为中心来设计、指导和进行组织教学。为了使学生全身心投入学习动机是非常重要的而且这将只有在科学技术成为学生日常生活的需要时才能得到激发。
考虑到这些,我们现在是现代世界的一部分,这种意识比以前更为强烈,知识的获取与事实的记忆日益无关。一个微型移动电话能够直接接入因特网。这是能够在我们的指尖表达出一些事实信息。结果是学生在大量的事实学习(这是很快过时的知识)的思维负担是明显无意义的。
一旦这些负担被减轻了,全体学生亲自感受科学和技术的潜能就能被发掘出来。科学和技术不再被看作仅仅是’最聪明的’学生的宝贝。批判性思维得到解放。这些能揭示挑战不可靠信息和无确实根据的个人观点的思维方法,不管这些观点是来自’专家’,还是广告代理商或者政治家们。
现存的许多科学技术的排它性营造了道德和价值观来自于艺术和人文的氛围。实际上许多当前
c++中的STL是不是与java中的容器是类似的东
基本一样的,访问方法的表现行为设计得不太一样。底层的设计思路都一个样。
学java有必要学STL吗
Java 中所有的STL均继承自Collection类。所以Collection类的方法所有的子类均可使用:
ACM中常用的方法有
boolean add(Object obj)
boolean remove(Oblect obj)
boolean contains(Object obj)
void clear()
boolean isEmpty()
Iterator iterator()
int size()
另外Collections类中包含sort方法可以对Vector容器进行排序,但是Vector中的元素必须实现Comparable接口或自定义Comparator,详见Vector。
请注意Collections和Collection不一样,前者是接口后者是类。
Set
java 中的Set是一个抽象的类,因此我们不可以用Set直接定义实例,必须通过子类来定义实例。常见的子类有 HashSet , TreeSet等。
另外java中的所有容器的元素都只能是类的实例而不可以是基本数据类型。所以我们不能定义装有int的Set而是要把int改为Integer类。
HashSet
HashSet 中的元素需要实现hashCode()方法,以实现元素的比较
class P
{
int x, y;
int hashCode()
{
return x*100000 + y;
}
}
SetPst = new HashSetP();
遍历Set中的元素
1 迭代器
IteratorP it = st.iterator();
while(it.hasNext())P e=it.next();
2 枚举
for(P e : st)System.out.println(e.x+" "+e.y);
TreeSet
TreeSet 与HashSet不同的地方在于TreeSet中的元素要实现Comparable接口
值得注意的是 TreeSet与C++中的set很相似,遍历是会自动按照comparable定义的顺序进行
class P implements ComparableP
{
int x,y;
int compareTo(P e)
{
return xe.x?-1:1;
}
}
C++中set有upper_bound(),lower_bound()方法和multiset,遗憾的是Java中 我暂时还没有看到
Map
Map 同Set一样包含HashMap和TreeMap 且如果遍历TreeMap会自动按照comparable规定的顺序进行
boolean containsKey(Object key)
boolean containsValue(Object value)
value get(Object key)
value put(Object key,Object value)
Map的一般用法
1.声明一个Map:
Map map = new HashMap();
2.向map中放值,注意: map是key-value的形式存放的,如:
map.put("sa","dd");
3.从map中取值:
String str = map.get("sa").toString,
结果是: str = "dd'
4.遍历一个map,从中取得key和value:
Map m= new HashMap();
for(Object obj : map.keySet()){
Object value = map.get(obj );
}
网上找的程序遍历map
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapTest {
private static MapInteger, String map=new HashMapInteger,String();
javastl容器的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVA容器、javastl容器的信息别忘了在本站进行查找喔。
发布于:2022-12-01,除非注明,否则均为
原创文章,转载请注明出处。