文档章节

黑马程序员_JAVA集合

s
 sun64bit
发布于 2015/04/15 12:10
字数 1719
阅读 4
收藏 1

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

个人对集合的理解: 
集合是一个容器,用一个对象可处理多个对象。 
java中常用的集合在系统中定义了三大接口 
java.util.Set接口及其子类,Set提供的是一个无序的集合 
java.util.List接口及其子类,List提供的是一个有序集合 
java.util.Map接口及其子类,Map提供了一个映射关系的集合数据结构 
对集合需要掌握的: 
怎样得到所选中的对象 
怎样增加集合中的元素 
怎样删除集合中的元素 
怎样循环遍历集合中的元素 
三种集合: 
Set: 
Set是无序集合,其中不允许存放相同元素。 
实现类有HashSet 
Set集合的方法: 
boolean add(E ,o)向集合中加入一个对象,如果集合中有这个对象,返回false 
boolean addAll(Collection<?,E>,c)向集合中加入另一个集合 
boolean contains(Object o)判断集合是否存在某个对象 
boolean containsAll(Collection<?,E>,c)判断集合中是否含有另一个集合 
Iterator<E>得到这个集合的迭代器 
boolean remove(Object o)从集合中移除一个对象 
int size()返回集合内元素的个数 
Object[] toArray()将集合转变成一个数组对象 
对Set集合进行增,删,改,查的操作 
代码: 

public class Mysettest { 
public static void main(String []args){ 
Mysettest mt=new Mysettest(); 
//创建含有10个学生对象的集合 
Set<Student> set=mt.userSet(10); 
mt.print(set); 
//查找学分为15的学生的信息 
mt.reacher(set, 15); 
//删除学分小于10的学生的信息 
Set<Student> sSet=mt.Delete(set, 10); 
mt.print(sSet); 
} 
//创建学生集合的方法 
public Set<Student> userSet(int size){ 
java.util.Random rd=new java.util.Random(); 
//创建一个集合 
Set<Student> set=new HashSet<Student>(); 
for(int i=0;i<size;i++){ 
Student st=new Student("用户:"+((char)(65+i)),rd.nextInt(20)); 
//将学生对象加到set集合中 
set.add(st); 
} 
return set; 
} 
//查找学生的方法 
public void reacher(Set<Student> set,int scroe){ 
System.out.println("学分为"+scroe+"的学生=============================>"); 
//给set集合加迭代器 
java.util.Iterator<Student> it=set.iterator(); 
while(it.hasNext()){ 
Student st=it.next(); 
if(st.getscore()==scroe){ 
st.showInfo(); 
} 
} 
} 
//删除学生信息的方法 
public Set<Student> Delete(Set<Student> set ,int scroe){ 
System.out.println("学分小于"+scroe+"的学生=============================>"); 
//创建一个用来存放要删除学生的信息的集合 
Set<Student> s=new HashSet<Student>(); 
//给set集合加迭代器 
java.util.Iterator<Student> it=set.iterator(); 
while(it.hasNext()){ 
Student st=it.next(); 
if(st.getscore()<scroe){ 
s.add(st); 
} 
} 
//将set集合中的s集合移除 
set.removeAll(s); 
return set; 
} 
//打印集合中元素的方法 
public void print(Set<Student> set){ 
//给set集合加迭代器 
java.util.Iterator<Student> it=set.iterator(); 
while(it.hasNext()){ 
Student st=it.next(); 
st.showInfo(); 
} 
} 
}

在Set中加入两个相同的元素会被覆盖,两个元素不可以同时存在在Set集合中。 
List:
List是有序集合,其中允许存放相同元素。 
实现类有ArrayList,LinkedList 
List集合的方法: 
boolean add(E ,o)向集合中加入一个对象,如果集合中有这个对象,返回false 
boolean addAll(Collection<?,E>,c)向集合中加入另一个集合 
boolean contains(Object o)判断集合是否存在某个对象 
boolean containsAll(Collection<?,E>,c)判断集合中是否含有另一个集合 
Iterator<E>得到这个集合的迭代器 
boolean remove(Object o)从集合中移除一个对象 
int size()返回集合内元素的个数 
Object[] toArray()将集合转变成一个数组对象 
对List集合进行增,删,改,查的操作 
代码: 

public class Mylisttest { 
public static void main(String []args){ 
Mylisttest ml=new Mylisttest(); 
//创建学生对象 
List<Student> list=ml.create(10); 
ml.print(list); 
//查找学分为15的学生的信息 
ml.reacher(list, 15); 
//删除学分小于10的学生的信息 
List<Student>l=ml.Delete(list, 10); 
ml.print(l); 
} 
//创建学生集合 
public List<Student> create(int size){ 
java.util.Random rd=new java.util.Random(); 
//构造学生集合 
List<Student> list=new ArrayList<Student>(); 
for(int i=0;i<size;i++){ 
//创建学生对象 
Student st=new Student("用户:"+((char)(65+i)),rd.nextInt(20)); 
//将学生对象加到list集合中 
list.add(st); 
} 
return list; 
} 
//查找学生信息的方法 
public void reacher(List<Student> list,int score){ 
System.out.println("学分为"+score+"的学生======================>"); 
for(int i=0;i<list.size();i++){ 
Student st=list.get(i); 
if(st.getscore()==score){ 
st.showInfo(); 
} 
} 
} 
//删除学生信息的方法 
public List<Student> Delete(List<Student> list,int score){ 
System.out.println("删除后的集合元素======================>"); 
for(int i=0;i<list.size();i++){ 
Student st=list.get(i); 
if(st.getscore()<score){ 
list.remove(st); 
} 
} 
return list; 
} 
//打印学生信息 
public void print(List<Student> list){ 
for(int i=0;i<list.size();i++){ 
Student st=list.get(i); 
st.showInfo(); 
} 
} 
}

为什么加迭代器:由于Set集合是无序的,所以不能根据索引来遍历整个数组,所以要加迭代器对集合进行遍历。 

在List中加入两个相同的元素不会被覆盖,两个元素可以同时存在在List集合中。 
Map:中存入的对象是一对一对的,即每个对象和它的一个名字关联在一起。 
Map中存放的是两种对象,一种是key(键),一种是value(值),它们是一一对应的 
Map中的key不可以有相同的值,而value可以有相同的值 
Map中的方法: 
put(K key,V value)向Map集合中加入一对关联的对象 
void putAll(Map<? extends k,?extends v> t)将另一个Map中的键和值加入到Map中 
boolean containsKey(Object key)判断Map的Key中是否存在某种指定的Key对象 
boolean containsKey(Object value)判断Map的Key中是否存在某种指定的value对象 
V remove(Object key)从Map中移除key对应的value 
int size()得到Map中的对象数 
Set<k> keySet()将Map中所有的key对象放入一个Set返回 
Collection<v> values()将Map中所有的value对象放入一个Collection返回 
对Map集合进行增,删,改,查的操作
代码: 

public class MyMapTest { 
public static void main(String []args){ 
MyMapTest mt=new MyMapTest(); 
Map<String,Student>map=mt.create(10); 
mt.print(map); 
//查找 
mt.reacher(map, 15); 
//删除 
mt.Delete(map, 10); 
} 
//创建学生集合 
public Map<String,Student> create(int size){ 
java.util.Random rd=new java.util.Random(); 
//创建map集合 
Map<String,Student> map=new HashMap<String,Student>(); 
for(int i=0;i<size;i++){ 
Student st=new Student("用户:"+((char)(65+i)),rd.nextInt(20)); 
map.put(""+i,st); 
} 
return map; 
} 
//查找学生信息 
public void reacher(Map<String,Student> map,int score){ 
System.out.println("学分为"+score+"的学生======================>"); 
//得到Map中key的集合 
Set<String> set=map.keySet(); 
//给set加迭代器 
java.util.Iterator<String> it=set.iterator(); 
while(it.hasNext()){ 
String key=it.next(); 
Student st=map.get(key); 
if(st.getscore()==score){ 
st.showInfo(); 
} 
} 
} 
//删除学生信息 
public void Delete(Map<String,Student> map,int score){ 
System.out.println("删除后的集合元素======================>"); 
//得到Map中key的集合 
Set<String> set=map.keySet(); 
//创建另一个集合存放要删除学生信息 
Set<String> s=new HashSet<String>(); 
//给set加迭代器 
java.util.Iterator<String> it=set.iterator(); 
while(it.hasNext()){ 
String key=it.next(); 
Student st=map.get(key); 
if(st.getscore()<score){ 
s.add(key); 
} 
} 
set.removeAll(s); 
//给set加迭代器 
java.util.Iterator<String> iter=set.iterator(); 
while(iter.hasNext()){ 
String key=iter.next(); 
Student st=map.get(key); 
st.showInfo(); 
} 
} 
//打印学生信息 
public void print (Map<String,Student> map){ 
//得到Map中key的集合 
Set<String> set=map.keySet(); 
//给set加迭代器 
java.util.Iterator<String> it=set.iterator(); 
while(it.hasNext()){ 
String key=it.next(); 
Student st=map.get(key); 
st.showInfo(); 
} 
} 
}


© 著作权归作者所有

s
粉丝 0
博文 15
码字总数 25126
作品 0
卢湾
私信 提问
黑马程序员.bobo.DAY.1

C:Program Files (x86)NVIDIA CorporationPhysXCommon;<span style="background:rgb(255,0,0)">%JAVA8HOME%bin;%JAVA8HOME%jrebin;</span>D:oracleproduct10.2.0db_1bin;C:Program Files (x8......

BobbyLou
2015/05/14
32
0
讣告:传智播客创始人张孝祥老师年前意外辞世

转自:http://news.csdn.net/a/20120101/310025.html 传智播客今日(2012年1月1日)沉痛宣布,公司创始人兼教学总监张孝祥老师于2011年12月31日在北京不幸急病突发意外逝世,终年38岁,张孝祥...

光石头
2012/01/01
1K
20
一整套的学习视频

安卓开发机密教程 http://edu.csdn.net/heima/video/androidVideo.html?fst Java基础教程 http://edu.csdn.net/heima/video/javase_bxd.html?fst Java高新技术 http://edu.csdn.net/heima/vi......

adddss
2012/07/28
677
0
讣告:传智播客创始人张孝祥老师年前意外辞世

传智播客今日(2012年1月1日)沉痛宣布,公司创始人兼教学总监张孝祥老师于2011年12月31日在北京不幸急病突发意外逝世,终年38岁,张孝祥追悼会将于2012年1月4日上午7时开始,在北京八宝山兰...

咖啡碼農
2012/01/01
10.5K
126
黑马程序员---面向对象之String类创建对象的一点思考

-------------------------android培训、java培训、期待与您交流! ------------------------- 最近在上黑马论坛时经常有同学问到关于String类创建对象的问题,最多的就是诸如:String str ...

长平狐
2013/07/01
121
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 早上儿子问我他是怎么来的

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @凉小生 :#今日歌曲推荐# 少点戾气,愿你和这个世界温柔以待。中岛美嘉的单曲《僕が死のうと思ったのは (曾经我也想过一了百了)》 《僕が死の...

小小编辑
今天
190
4
Excption与Error包结构,OOM 你遇到过哪些情况,SOF 你遇到过哪些情况

Throwable 是 Java 中所有错误与异常的超类,Throwable 包含两个子类,Error 与 Exception 。用于指示发生了异常情况。 Java 抛出的 Throwable 可以分成三种类型。 被检查异常(checked Exc...

Garphy
今天
10
0
计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部