什么是集合???
用一句话来概括就是,集合就是存放“类对象“的容器,集合类存放于java.util包中,集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(列表)和map(映射)。集合接口分为:Collection和Map,list、set实现了Collection接口。
集合相对于数组的作用
集合相对于数组来说有很多的优势,比如说集合的长度可以改变,但是数组的长度就不能改变,只要确定后就永远都不可以改变。集合大体分为三种,list集合 set集合和map集合。这三种集合各有优势,我们平时用的大多是list和map。list集合的优势在与读取速度快,适合用来遍历数据,因为list集合根本还是数组,只不过是在数组上面做了很多的运算才使得他可一改变长度。而map集合的优势是他查找数据容易,应为他包含了两个对象,可以很快的查找数据,改变数据。
使用Iterator遍历结合的方法
public class MyTest { public static void main(String[] args) { //1、iterator 迭代ArrayList集合 List list = new ArrayList<>(); //集合 list.add("a"); list.add("b"); list.add("c"); //获取迭代器 Iterator iter = list.iterator(); //判断下一个元素是否存在 while (iter.hasNext()){ //存在使用next迭代 Object o = iter.next(); // if(o.equals("a")){ // iter.remove(); // } System.out.println("数字分别是:"+o); } //2、iterator迭代set集合 HashSet set = new HashSet<>(); set.add(new Theme(1,"标题1","内容1")); set.add(new Theme(2,"标题2","内容2")); Iterator ite = set.iterator(); while (ite.hasNext()){ Theme theme = (Theme)ite.next(); System.out.println(theme.getNumber()+","+theme.getTitle()+","+theme.getIntroduce()); } //3、iterator迭代map集合 //①、:相对来说比较麻烦 Map map=new HashMap<>(); map.put(1,"陈诚"); map.put(2,"余恩丽"); map.put(3,"赵容"); //返回键的集合 Set keySet = map.keySet(); Iterator itera = keySet.iterator(); while (itera.hasNext()){ System.out.println((int)itera.next()); } //返回值的集合 Collection values = map.values(); Iterator iteraa = values.iterator(); while (iteraa.hasNext()){ System.out.println((Object) iteraa.next()); } //②、:enrtySet Set set1=map.keySet();//得到键的集合 Collection values1=map.values(); //得到值的集合 // Set<Map.Entry<Integer,String>> entrySet = map.entrySet(); Iterator<Map.Entry<Integer, String>> entryIterator = map.entrySet().iterator(); while (entryIterator.hasNext()){ Map.Entry<Integer, String> entry = entryIterator.next(); System.out.println("键是:"+entry.getKey()+",值是:"+entry.getValue()); } } }
keySet是键的集合,Set里面的类型即key的类型,entrySet是 键-值 对的集合,Set里面的类型是Map.Entry
使用迭代删除Arraylist中的数据
//准备数据
List<Student> list = new ArrayList<>();
list.add(new Student("male"));
list.add(new Student("female"));
list.add(new Student("female"));
list.add(new Student("male"));
//遍历删除,除去男生
Iterator<Student> iterator = list.iterator();
while (iterator.hasNext()) {
Student student = iterator.next();
if ("male".equals(student.getGender())) {
iterator.remove();//使用迭代器的删除方法删除
}
}
使用迭代删除HashMap中的数据
虽然Map没有迭代,但是它的entrySet有啊,所以我们可以通过它来实现遍历删除
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
map.put("d", 4);
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
entry = iterator.next();
if (entry.getValue() % 2 == 0) {
iterator.remove();
}
}
System.out.println(map);
来源:oschina
链接:https://my.oschina.net/u/4115727/blog/3207825