------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(); } } }