Java学习第十五节 之容器、集合
一、常用工具方法
1、Collection接口 //优于数组的是可以自动收缩长度
2、contains() //判断是否存在某元素,对象是元素
3、containAll() //判断集合是否包含于另一个集合里边,对象是集合
4、remove() //移除某元素
5、clear() //清空对应数组
6、retainAll() //求交集
7、toArray() //把对象转换成数组,数组类型被强制转换成Object[]
8、求长度:
String è使用length()方法
Array è使用的是length属性
集合 è使用的是size()方法
程序举例:
importjava.util.ArrayList;
import java.util.Collection;
public class test {
public static void main(String[] args){
Collection<Object> c=newArrayList<Object>(); //定义数组c
System.out.println( c.isEmpty()); //判断数组是否为空
c.add("123"); //给数组c添加元素
c.add("456");
c.add(true);
c.add('a');
System.out.println(c.size()); //输出数组现在的长度
System.out.println( c.isEmpty()); //判断数组是否为空
c.remove("123"); //移除数组中的某元素
System.out.println(c.size()); //再次打印数组当前长度
System.out.println( c.isEmpty()); //判断数字是否为空
c.clear(); //清空数组
System.out.println(c.size()); //打印数组长度
System.out.println( c.isEmpty()); //判断数组是否为空
Collection<Object>c1=new ArrayList<Object>(); //定义数组c1
c1.add("123");
c1.add("456"); //给数组c1添加元素
c1.add(true);
System.out.println(c.contains("123")); //判断当前数组c是否含有传进来的该元素
System.out.println(c1.contains("123")); //判断当前数组c1是否含有传进来的该元素
System.out.println(c.containsAll(c1)); //判断数组c是否包含在数组c1里边
System.out.println(c1.containsAll(c)); //判断数组c1是否包含在数组c里边
}
}
二、集合List
1、List集合分为ArrayList和LinkedList
2、List遍历方法
(1)普通for循环
(2)增强for循环,即for-each循环
(3)迭代器
3、代码练习
public class ListTest2{
public void useList(List list){ //封装使用list实现输入法的方法
while(true){
System.out.println("请输入拼音;");
Scanner s=new Scanner(System.in);
String pinyin=s.next();
if(pinyin.equalsIgnoreCase("quit")){
break;
}
boolean exist=true;
for(Object o:list){
Words word=(Words)o;
String py=word.getPinyin();
String ws=word.getWords();
if(py.equals(pinyin)){
String[] wo=ws.split(",");
for(inti=0;i<wo.length;i++){
System.out.print((i+1)+"、"+wo[i]+" ");
}
System.out.println();
break;
}
if(!exist){
System.out.println("您输入的拼音不存在!!");
}
}
}
}
public staticvoid main(String[] args){ //主方法测试
Words w1=newWords("zhang","张,长,涨,章,帐"); //初始化对象
Words w2=newWords("zhao","找,照,招,着,赵");
Words w3=newWords("qian","钱,前,千,$_$,欠,倩");
Words w4=newWords("sun","孙,损,笋,隼");
Words w5=newWords("li","里,李,理,离,力");
List list=new ArrayList(); //创建数组list
list.add(w1); //把上边初始化的对象添加到数组里边
list.add(w2);
list.add(w3);
list.add(w4);
ListTest lt=new ListTest ();
t.useList(list);
4、list中类Connections的常用方法
1) Connections.sort(list) è 将list按从小到大的顺序排列
2) Connections.reverse(list)è 将list反序排列
3) Connections.shuffle(list)è 将list随机排列
4) Connections.fill(list,元素)è 将元素填充到集合list里边,并排序
5) Connections.copy(list1,list) è 将集合list里边的元素全部复制进集合list1里边
6) Connections.binarySeach() è 查找
注意:1、 缺点:没有类型检测,不安全;效率低,需要装箱、拆箱(可使用泛型改善该情况)
三、集合Set
实现可分为HashSet()和TreeSet()
1、HashSet(),无序的,散列表
2、TreeSet(), 有序的,树形结构,必须实现comparable接口è实现ComparableTo()方法,返回的数字,0表示相等,负数表示小于,正数表示大于。
四、集合Map
1、分类:HashMap、HashTable、TreeMap
2、遍历方法:keySet()è所有键
values()è所有的值
entrySet()è所有entry条目,包括键和值
五、泛型,上述集合中使用泛型可避免警告
泛型优点:1、检测类型,避免错误
2、提高效率