java常用类库 集合类
1 迭代器遍历集合 Collection接口
Collection是List和Set的父类
制作一个案例
c++
package nb;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Mus {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("11");
list.add("22");
Iterator<String > it = list.iterator();
while (it.hasNext()){
String str = (String) it.next();
System.out.println(str);
}
}
}
2 list接口
list接口在Collection接口之上单独定义了两个重要的方法
get(int index) 获取指定索引位置元素
set(int index,Object obj) 将集合中指定索引位置的对象修改为指定的对象
ArrayList 实现了可变的数组,允许保存所有的元素,包括null,也可以根基索引位置对集合进行快速的随机访问.缺点是向指定索引位置插入对象或从指定的索引位置删除对象的速度较慢
LinkedList 类采用链表结构保存对象,这种结构的优点是便于向集合中插入对象或从集合中删除对象;但是对应随机访问集合中的对象使用LinkList
类实现List集合的效率较低
3 foreach和forEach遍历集合的元素
c++
package nb;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Mus {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("11");
list.add("22");
for (String a:list){
System.out.println(a);
}
}
}
c++
package nb;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Mus {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("11");
list.add("22");
list.forEach(e-> System.out.println(e));
}
}
4 使用Predicate操作集合
removelf对集合里指定条件的元素进行批量删除,举例说明
把元素长度大于2的元素删除
c++
package nb;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class Mus {
public static void main(String[] args) {
Collection<String> list = new ArrayList<>();
list.add("11");
list.add("223");
list.add("22");
list.removeIf(e ->e.length()>2);
System.out.println(list);
}
}
Predicate筛选集合内元素是否包含指定条件
c++
package nb;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.Objects;
import java.util.function.Predicate;
public class Mus {
public static void main(String[] args) {
Collection ct = new ArrayList<>();
ct.add("11");
ct.add("22");
ct.add("333");
System.out.println(calNum(ct,e -> ((String)e).contains("1")));
}
public static int calNum(Collection ct, Predicate pc){
int number = 0;
for (Object obj:ct){
if (pc.test(obj)){
number++;
}
}
return number;
}
}
5 set接口概述
5.1 hashset
c++
package nb;
import java.util.HashSet;
import java.util.Set;
public class Mus {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
String a1 = new String("你哈");
String a2 = new String("哈哈");
set.add(a2);
set.add(a1);
for (String ste:set){
System.out.println(ste);
}
}
}
5.2 treeset类似、
6 map接口
map接口与set接近但又有所不同,map接口会同时传入键和值
map分为HashMap类和TreeMap类
写一个HashMap案例,分别输出HashMap的键和值
c++
package nb;
import java.util.*;
public class Mus {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
map.put("11","22");
map.put("33","44");
Set<String> set = map.keySet();
Iterator<String> it = set.iterator();
while (it.hasNext()){
System.out.println(it.next()+" ");
}
Collection<String> coll = map.values();
it = coll.iterator();
while (it.hasNext()){
System.out.println(it.next());
}
}
}
遍历map还有两种方法entrySet和foreach循环