6个回答
展开全部
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;
}
}
Set<P>st = new HashSet<P>();
遍历Set中的元素
1 迭代器
Iterator<P> 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 Comparable<P>
{
int x,y;
int compareTo(P e)
{
return x<e.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 Map<Integer, String> map=new HashMap<Integer,String>();
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;
}
}
Set<P>st = new HashSet<P>();
遍历Set中的元素
1 迭代器
Iterator<P> 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 Comparable<P>
{
int x,y;
int compareTo(P e)
{
return x<e.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 Map<Integer, String> map=new HashMap<Integer,String>();
展开全部
STL无论是从实用还是思想都值得学习。
但由于MS有意无意的忽略,导致VC中STL效率不好,而且MSDN中介绍也很少!
基本没有比较好的中文资料,学STL要看E文的了!
另外,STL应该是Generic Programming的典范,GP是否归于OOP当中,现在还没有定论。
但由于MS有意无意的忽略,导致VC中STL效率不好,而且MSDN中介绍也很少!
基本没有比较好的中文资料,学STL要看E文的了!
另外,STL应该是Generic Programming的典范,GP是否归于OOP当中,现在还没有定论。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有必要,STL是C++的库,java 里有自己专门的集合库。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
STL不是C++库吗
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
stl ? jstl ?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询