Java 中的集合
来源:互联网 发布:每日生产报表软件 编辑:程序博客网 时间:2024/06/05 00:25
初学Java ,看的是老韩的视频,总结了一下:
用途
数据的容器,储存各种各样的数据
集合框架--使用
都需要引入这个包:import java.util.*;
分类:
List结构的集合类
ArrayList类,Vector类,
LinkedList类,Stack类
1.ArrayList类的使用(无同步性,线程不安全)
//java集合类用法--List结构--ArrayList类
import java.util.*;//集合类基本上在util包中
public class Demo139 {
public static void main(String[] args) {
//定义ArrayList对象
ArrayList al=new ArrayList();
//显示大小
System.out.println("al大小:"+al.size());
//向all中加入数据(类型是Object)
//创建一个职员
Clerk clerk1=new Clerk("宋江",50,1000);
Clerk clerk2=new Clerk("吴用",45,1200);
Clerk clerk3=new Clerk("林冲",35,1300);
//将clerk1加入到al中
al.add(clerk1);
al.add(clerk2);
al.add(clerk3);
//可不可以放入同样的对象?
al.add(clerk1);
//显示大小
System.out.println("al大小:"+al.size());
//如何访问al中的对象(数据)
//访问第一个对象
//Clerk temp=(Clerk)al.get(0);
//System.out.println("第一个人的名字是:"+temp.getName());
//遍历al所有的对象(数据)
for(int i=0;i<al.size();i++){
Clerk temp=(Clerk)al.get(i);
System.out.println("名字:"+temp.getName());
}
//如何从al中删除一个对象
al.remove(1);
System.out.println("===删除吴用===");
//遍历al所有的对象(数据)
for(int i=0;i<al.size();i++){
Clerk temp=(Clerk)al.get(i);
System.out.println("名字:"+temp.getName());
}
}
}
2.LinkedList集合类的使用方法 (感觉是队列)
//LinkedList集合类的使用import java.util.*;public class Demo141 {public static void main(String[] args) {LinkedList ll=new LinkedList();Empp emp1=new Empp("sa01","aa",1.2f);Empp emp2=new Empp("sa02","bb",1.2f);Empp emp3=new Empp("sa03","cc",1.2f); //addFirst表示把emp1加载(链表)队列的最前面ll.addFirst(emp1);//addFirst方法是可以插入在数组之前ll.addFirst(emp2);//也可以理解为addFirst方法是后进先出的方法 //addLast表示把emp3加载(链表)队列的后面ll.addLast(emp3);System.out.println("测试LinkedList集合类中的addFist及addLast方法");for(int i=0;i<ll.size();i++){System.out.println( ((Empp)ll.get(i)).getName() ); //注意:这里包了好几层括号 }//remove表示将某一条数据进行删除ll.remove(emp1);//将ll中的emp1数据删除System.out.println("测试LinkedList集合类中的remove方法");for(int i=0;i<ll.size();i++){System.out.println(((Empp)ll.get(i)).getName());}ll.removeAll(ll);//清除整个链表System.out.println("测试LinkedList集合类中的remmoveall方法");for(int i=0;i<ll.size();i++){System.out.println(((Empp)ll.get(i)).getName());}}}
===============================================================================
3.Vector集合类的使用(线程安全具有同步性)
//Vector集合类(向量)的使用方法
import java.util.*;
public class Demo142 {
public static void main(String[] args) {
//Vector的用法
Vector vv=new Vector();
AEmp emp1=new AEmp("1","aa",1.2f);
AEmp emp2=new AEmp("2","bb",1.2f);
AEmp emp3=new AEmp("3","cc",1.2f);
vv.add(emp1);
vv.add(emp2);
vv.add(emp3);
//遍历
for(int i=0;i<vv.size();i++){
AEmp emp=(AEmp)vv.get(i);
System.out.println(emp.getName());
}
}
}
===============================================================================
4.Stack集合类(栈)的使用
//Stack集合类(栈)的使用方法
package com.haiding.set;
import java.util.*;
public class Demo143 {
public static void main(String[] args) {
//Stack的用法
Stack stack=new Stack();
AEmp emp1=new AEmp("s1","aa",1.2f);
AEmp emp2=new AEmp("s2","bb",1.2f);
stack.add(emp1); //栈是往前加的
stack.add(emp2);
for(int i=0;i<stack.size();i++){
System.out.println(((AEmp)stack.get(i)).getName());
}
}
}
集合框架--深入讨论
ArrayList和Vector的区别
1、同步性
Vector 是线程同步的,线程安全的。
ArrayList是线程异步的,因此ArrayList中的对象并不是线程安全的,但是速度快。
2、数据增长
Vector缺省情况下自动增长原来一倍的数组长度,
ArrayList是原来的50%,
所以如果你要在集合中保存大量的数据那么使用Vector有一些优势
Map结构的集合类
HashMap类,Hashtable类
HashMap集合类的使用[Demo143.java]
//HashMap集合类的使用
import java.util.*;
public class Demo143 {
public static void main(String[] args) {
//创建HashMap对象
HashMap hm=new HashMap();
Emp emp1=new Emp("s001","aa",3.4f);
Emp emp2=new Emp("s002","bb",5.6f);
Emp emp3=new Emp("s003","cc",1.2f);
//将emp放入到hm中
//hm.put(null,null);//可以放空值
hm.put("s001", emp1);
hm.put("s002", emp2);
hm.put("s002", emp3);//不允许key重复,所以emp3会覆盖emp2
//如果你要查找编号是s002
if(hm.containsKey("s002")){//取键值containsKey
System.out.println("有该员工");
//如何取出,键<key>值
Emp emp=(Emp)hm.get("s002");
System.out.println("名字"+emp.getName());
}else{
System.out.println("没该员工");
}
//遍历HashMap中所有的key和value值
//Iterator迭代
Iterator it=hm.keySet().iterator();
//hasNext返回一个boolean值
while(it.hasNext()){
//如果有下一个取出key值
String key=it.next().toString();
//通过key取出value
Emp emp=(Emp)hm.get(key);
System.out.println("名字:"+emp.getName());
System.out.println("工资:"+emp.getSal());
}
}
}
-------------------------------------------------------------------------------
Hashtable集合类的使用(Hashtable具有同步性,线程安全)
import java.util.*;
public class Demo144{
public static void main(String []args){
Hashtable ht=new Hashtable();//Hashtable与HsahMap在用法上一致
Emp emp4=new Emp("s101","a1",2.2f);
Emp emp5=new Emp("s102","a2",1.2f);
Emp emp6=new Emp("s103","a3",4.2f);
ht.put("s101", emp4);
ht.put("s102", emp5);
ht.put("s103", emp6);
//遍历
for(Iterator it=ht.keySet().iterator();it.hasNext();){
String key=it.next().toString();
Emp emp=(Emp)ht.get(key);
System.out.println("名字:"+emp.getName()+"\t工资:"+emp.getSal());
}
}
}
-------------------------------------------------------------------------------
HashMap和Hashtable集合类的区别
同步性
Hashtable是线程同步的,线程安全的
HashMap则是线程异步的,不是线程安全的。但是效率高
值(了解)
HashMap可以让你将空值作为一个表的条目的key或value但是Hashtable是不能放入空值的(null)
同步和线程安全性:
同步和线程安全在于
一个数据对象,如果同时多个线程访问,只能有一个线程可以访问到,其他的会排队等待。
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类 - -
- JAVA中的集合类
- java中的集合类
- Java中的集合类
- Java中的集合
- JAVA中的集合
- java中的集合
- java中的集合排序
- Java中的一些集合
- JAVA中的集合类
- Java中的集合类
- Java中的集合类
- java中的集合SetEntry
- 关于Android屏幕适配的一种方法
- java中的集合
- 学习vue的一些资源
- Fragment的setUserVisibleHint方法实现懒加载
- Exception Value: no such table: pizzas_topping
- Java 中的集合
- clipse上安装GIT插件EGit及使用
- AfxGetApp()->m_pMainWnd和AfxGetMainWnd()
- Android:读取Word文档
- JS数组对象的splice()和slice()的区别
- Ubuntu下多个版本OpenCV管理(Multiple Opencv version)
- 离散题目3
- 线程的互斥与死锁问题
- 【PMP认证考试之个人总结】第 7 章 项目质量管理