❶ java哪些集合类是线程安全的
在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的。在jdk1.2之后,就出现许许多多非线程安全的类。 下面是这些线程安全的同步的类:
vector:就比arraylist多了个同步化机制(线程安全),因为效率较低,现在已经不太建议使用。在web应用中,特别是前台页面,往往效率(页面响应速度)是优先考虑的。
statck:堆栈类,先进后出
hashtable:就比hashmap多了个线程安全
enumeration:枚举,相当于迭代器
除了这些之外,其他的都是非线程安全的类和接口。
线程安全的类其方法是同步的,每次只能一个访问。是重量级对象,效率较低。
其他:
1. hashtable跟hashmap的区别
hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!
❷ Java编程:你所知道的集合类都有哪些主要方法
看API啊,我主要用到的是list arrayList map hashmap
❸ Java的集合对象都有哪些
List: 有顺序的,元素可以重复遍历:for�0�2 迭代排序:Comparable Comparator�0�2�0�2 Collections.sort()ArrayList:底层用数组实现的List特点:查询效率高,增删效率低�0�2 轻量级 线程不安全LinkedList:底层用双向循环链表 实现的List特点:查询效率低,增删效率高Vector: 底层用数组实现List接口的另一个类特点:重量级,占据更多的系统开销 线程安全 Set:无顺序的,元素不可重复(值不相同)遍历:迭代排序:SortedSetHashSet:采用哈希算法来实现Set接口唯一性保证:重复对象equals方法返回为true重复对象hashCode方法返回相同的整数不同对象 哈希码 尽量保证不同(提高效率) SortedSet:对一个Set排序TreeSet:在元素添加的同时,进行排序。也要给出排序规则唯一性保证:根据排序规则,compareTo方法返回为0,就可以认定两个对象中有一个是重复对象。 Map:元素是键值对 key:唯一,不可重复 value:可重复遍历:先迭代遍历key的集合,再根据key得到valueHashMap:轻量级�0�2 线程不安全�0�2 允许key或者value是nullHashtable:重量级 线程安全 不允许key或者value是nullProperties:Hashtable的子类,key和value都是String SortedMap:元素自动对key排序TreeMap: 集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。
❹ java集合类
排名次你自己搞定吧——30分只值这么多。
/*
一个班15个人,每个学生都有学号,姓名,英语成绩,语文成绩,数学成绩。
要求:
1)每个人的成绩在40到100分以内。学号从1开始排列,姓名随意
2)将学生保存到Map集合中,按照KEY-->学号 VALUE--->学生
3)将全班的学生按三科总成绩排名显示出所有学生信息
*/
import java.util.*;
public class SaveStudentBai {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Map <int,FifteenStudent> fifMap = new HashMap <int,FifteenStudent> ();
FifteenStudent[] fifArray = new FifteenStudent[15];
for(int i=0;i<15;i++) {
// System.out.println("Enter ID!");
// int id = sc.nextInt();
//既然学号从1开始排列,那么就这样吧。少写一个算一个,本人比较懒。o(╯□╰)o
int id = i+1;
System.out.println("Enter Name!");
String name = sc.next();
System.out.println("Enter English Score!");
int engScore = sc.nextInt();
System.out.println("Enter Chinese Score!");
int chiScore = sc.nextInt();
System.out.println("Enter Math Score!");
int matScore = sc.nextInt();
fifArray[i] = new FifteenStudent(id, name, engScore, chiScore, matScore);
fifMap.put(id,fifArray[i]);
}
}
}
class FifteenStudent {
int id;
String name;
int engScore;
int chiScore;
int matScore;
public FifteenStudent(int id,String name,int engScore,int chiScore,int matScore) {
this.id = id;
this.name = name;
this.engScore = engScore;
this.chiScore = chiScore;
this.matScore = matScore;
}
}
❺ java中的集合有几种
集合类是放在java.util.*;这个包里。集合类存放的都是对象的引用,而非对象本身,为了说起来方便些,我们称集合中的对象就是指集合中对象的引用(reference)。引用的概念大家不会忘了吧,在前边我们讲数据类型时讲的。
集合类型主要有3种:set(集)、list(列表)、map(映射)和Queue(队列)。//队列为jdk5中的加上的
(1) Set
集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。我们知道数学上的集合也是Set这个,集合里面一定是没有重复的元素的。
(2)List
列表(List)的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序的Set是不同的。它是链表嘛,一条链肯定有顺序这个顺序就不一定了。
(3)Map
映射(Map),这个在java里不是地图的意思,其实地图也是映射哈。它里面的东西是键-值对(key-value)出现的,键值对是什么呢?举个例子,比如我们查字典,用部首查字法。目录那个字就是键,这个字的解释就是值。键和值成对出现。这样说可以理解吧。这也是很常用的数据结构哦。
(4)Queue
在jdk5.0以前,通常的实现方式是使用java.util.List集合来模仿Queue。Queue的概念通过把对象添加(称为enqueuing的操作)到List的尾部(即Queue的后部)并通过从List的头部(即Queue的前部)提取对象而从 List中移除(称为dequeuing的操作)来模拟。你需要执行先进先出的动作时可以直接使用Queue接口就可以了。
这4个东西,有时候功能还不太完善,需要有些子类继承它的特性。Set的子接口有TreeSet,SortedSet,List的有ArrayList等,Map里有HashMap,HashTable等,Queue里面有BlockingQueue等。我们来看看例子吧:
实践: Set举例
import java.util.*;
public class SetExample {
public static void main(String[] args) {
Set set = new HashSet(); //HashSet是Set的子接口
set.add("one");
set.add("second");
set.add("3rd");
set.add(new Integer(4));
set.add(new Float( 5.0F ));
set.add("second");
set.add(new Integer(4));
System.out.println(set);
}}
List举例:
import java.util.*;
public class ListExample {
public static void main(String[] args) {
List list = new ArrayList();
list.add("one");
list.add("second");
list.add("3rd");
list.add(new Integer(4));
list.add(new Float( 5.0F ));
list.add("second");
list.add(new Integer(4));
System.out.println(list);
}}
Map举例
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
import java.io.FileReader;
public class MapExample {
public static void main(String[] args) throws java.io.FileNotFoundException {
Map word_count_map = new HashMap();
FileReader reader = new FileReader(args[0]);
Iterator words = new WordStreamIterator(reader);
while ( words.hasNext() ) {
String word = (String) words.next();
String word_lowercase = word.toLowerCase();
Integer frequency = (Integer)word_count_map.get(word_lowercase);
if ( frequency == null ) {
frequency = new Integer(1);
} else {
int value = frequency.intValue();
frequency = new Integer(value + 1);}
word_count_map.put(word_lowercase, frequency);
}
System.out.println(word_count_map);
}}
Queue举例:
import java.io.IOException;
import java.io.PrintStream;
import java.util.LinkedList;
import java.util.Queue;
public class QueueTester {
public Queue<String> q; //发现了一个奇怪的语法,这个尖括号是泛型声明
public QueueTester() {q = new LinkedList<String>();}
public void testFIFO(PrintStream out) throws IOException {
q.add("First");
q.add("Second");
q.add("Third");
Object o;
while ((o = q.poll()) != null) {
out.println(o);}}
public static void main(String[] args) {
QueueTester tester = new QueueTester();
try { tester.testFIFO(System.out);
} catch (IOException e) {
e.printStackTrace(); } }}
❻ java集合类,,,
java几何类一般是四种,map集合,list集合,set集合,properity集合,常用的是map和list,map是键值对类型的集合,list是类似于数组类型的集合,按你的意思可以使用map集合类,学生信息可以看成是一个自定义类型 map<string,object> mp=new map<string,object>();
❼ java集合有哪些
Java集合类存放在java.util包中,是一个用来存放对象的容器。
注意:
1.集合只能存放对象。比如你存入一个int型数据66放入集合中,其实它是自动转换成Integer类后存入的,Java中每一种基本数据类型都有对应的引用类型。
2.集合存放的都是对象的引用,而非对象本身。所以我们称集合中的对象就是集合中对象的引用。对象本身还是放在堆内存中。
3.集合可以存放不同类型,不限数量的数据类型。
一、List集合:(有序,元素可以重复)
1、ArrayList集合:
1)底层数据结构是数组,查找快,增删慢。
2)线程不安全,效率高
2、Vector集合:
1) 底层数据结构是数组,查询快,增删慢
2)线程安全,效率低
3、LinkedList集合:
1) 底层数据结构是链表,查询慢,增删快
2)线程不安全,效率高
二、Set集合(元素不可重复,元素唯一)
1、Hashset集合:
1) 底层数据结构是哈希表,哈希表依赖两个方法hascode ()和equals()方法
2)两个方法的执行顺序:
首先判断hascode()值是否相同
是:继续执行equals()方法,看其返回值
是true:说明元素重复,不添加
是false:就直接添加元素
否:就直接添加到集合
2、Treeset集合:
1)底层数据结构是二叉树
❽ java的集合类都有哪些,主要方法
:查API文档埃方法都差不多 存值取值 Set用迭代取值,List可以用迭代也可以用get(下标值),因为List是有顺序的,Set没有顺序。Set的add()方法返回一个boolean值,因为不能重复嘛,重复放东西就返回false。Map要特殊一点,用put放东西。
❾ java中的几个集合类
list
map
set三个都是接口
map
映射表,
一个key只能对应一个value(它的反命题,一个value只对应一个key不成立)
最常用的有:
map
l---
hashmap
(key可以null)
l---
hashtable
(key不能为null)
l---properties
(适合读取.properties格式的文件)
l---
sortedmap(interface根据key排序)
l---treemap(用二叉树实现key排序)
list
和
set
都是线性的,主要区别是list里面存放的内容可以重复,而set同一对象只保留唯一的一个。因此,map里面,提取key集合的返回类型是set,而提取value集合的类型是collection(list/set)的父类型。
常用的有
list
l---linkedlist(链表)
l---arraylist(动态数组,所有方法不同步)
l---vector(动态数组,所有方法同步)
l---stack(可以实现lifo的栈)
❿ 怎么才能了解JAVA集合类集合类是什么
数组是集合的一种,是集合的一个子集,你理解了数组就理解了集合.
理解集合类
集合类存放于java.util包中。
集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。
集合类型主要有3种:set(集)、list(列表)和map(映射)。
(1)集
集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。
对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象。
集也有多种变体,可以实现排序等功能,如TreeSet,它把对象添加到集中的操作将变为按照某种比较规则将其插入到有序的对象序列中。它实现的是SortedSet接口,也就是加入了对象比较的方法。通过对集中的对象迭代,我们可以得到一个升序的对象集合。
(2)列表
列表的主要特征是其对象以线性方式存储,没有特定顺序,只有一个开头和一个结尾,当然,它与根本没有顺序的集是不同的。
列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。
关于实现列表的集合类,是我们日常工作中经常用到的,将在后边的笔记详细介绍。
(3)映射
映射与集或列表有明显区别,映射中每个项都是成对的。映射中存储的每个对象都有一个相关的关键字(Key)对象,关键字决定了对象在映射中的存储位置,检索对象时必须提供相应的关键字,就像在字典中查单词一样。关键字应该是唯一的。
关键字本身并不能决定对象的存储位置,它需要对过一种散列(hashing)技术来处理,产生一个被称作散列码(hash code)的整数值,散列码通常用作一个偏置量,该偏置量是相对于分配给映射的内存区域起始位置的,由此确定关键字/对象对的存储位置。理想情况下,散列处理应该产生给定范围内均匀分布的值,而且每个关键字应得到不同的散列码。
集合类简介
java.util中共有13个类可用于管理集合对象,它们支持集、列表或映射等集合,以下是这些类的简单介绍
集:
HashSet: 使用HashMap的一个集的实现。虽然集定义成无序,但必须存在某种方法能相当高效地找到一个对象。使用一个HashMap对象实现集的存储和检索操作是在固定时间内实现的.
TreeSet: 在集中以升序对对象排序的集的实现。这意味着从一个TreeSet对象获得第一个迭代器将按升序提供对象。TreeSet类使用了一个TreeMap.
列表:
Vector: 实现一个类似数组一样的表,自动增加容量来容纳你所需的元素。使用下标存储和检索对象就象在一个标准的数组中一样。你也可以用一个迭代器从一个Vector中检索对象。Vector是唯一的同步容器类??当两个或多个线程同时访问时也是性能良好的。
Stack: 这个类从Vector派生而来,并且增加了方法实现栈??一种后进先出的存储结构。
LinkedList: 实现一个链表。由这个类定义的链表也可以像栈或队列一样被使用。
ArrayList: 实现一个数组,它的规模可变并且能像链表一样被访问。它提供的功能类似Vector类但不同步。
映射:
HashTable: 实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类是前面java实现的一个继承,并且通常能在实现映象的其他类中更好的使用。
HashMap: 实现一个映象,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个)。
WeakHashMap: 实现这样一个映象:通常如果一个键对一个对象而言不再被引用,键/对象对将被舍弃。这与HashMap形成对照,映象中的键维持键/对象对的生命周期,尽管使用映象的程序不再有对键的引用,并且因此不能检索对象。
TreeMap: 实现这样一个映象,对象是按键升序排列的。
Set和List都是由公共接口Collection扩展而来,所以它们都可以使用一个类型为Collection的变量来引用。这就意味着任何列表或集构成的集合都可以用这种方式引用,只有映射类除外(但也不是完全排除在外,因为可以从映射获得一个列表。)所以说,把一个列表或集传递给方法的标准途径是使用Collection类型的参数