容器-List、Set、Map的基本使用
Collection接口:是List、Set接口的父类;
List接口中的元素特点:有序、可重复;
Set接口中的元素特点:无序、不可重复;
List接口中常用方法:
/**
* List中的基本方法
*/
List<String> list=new ArrayList<>();
List<String> list2=new LinkedList<>();
List<String> list3=new LinkedList<>();
list.add("hello01"); //向List容器中添加元素hello01
list.add("hello02"); //向List容器中添加元素hello02
list.add("hello03");
list.add(1,"hello03"); //插入到下标为1的位置
list.get(1); //获取下标为1位置的内容
list.indexOf("hello01"); //获取字符串"hello01"在容器中出现的位置,只输出第一次出现出现位置的下标,如果该位置之后还有出现过,不会输出其位置下标
list.remove(0); //删除指定下标的元素
list.remove("hello02"); //删除指定内容
list.contains("hello01"); //遍历list中是否含有字符串"hello01"
list.clear(); //清空容器中所有元素
list.size(); //计算容器中含有几条数据
list.isEmpty(); //判断容器是否为空
list2.add("hello01"); //向list2容器中添加元素hello01
list2.add("hello02"); //向list2容器中添加元素hello02
list2.add("hello03");
list3.add("hello01"); //向list3容器中添加元素hello01
list3.add("hello02"); //向list3容器中添加元素hello02
list3.add("hello03");
System.out.println(list2.equals(list3)); //判断两个容器是否相等,显然在容器中重写了equals方法,即比较两个容器中内容是否相等
System.out.println(list2.toString()); //与直接输出list02结果一致,即list2中重写了toString()方法,即使没有写但还是默认调用了toString方法
List中的单向迭代器遍历与双迭代器遍历:
//利用单向迭代器遍历
Iterator<String> it=list2.iterator();//调用迭代器中的方法,以便之后利用迭代器遍历输出容器中的内容
//系统运行某位置时判断下一个位置是否存在元素
while (it.hasNext()){ //--->->--->-->---
String s2=it.next(); //得到每个位置得元素
System.out.println(s2);
}
//利用双向迭代器遍历
ListIterator<String> lt1=list2.listIterator();
while (lt1.hasPrevious()){ //-<---<--<-
System.out.println(lt1.previous());
}
Set接口中常用方法:
/**
* Set中的基本方法
*/
Set<String> set=new HashSet<>();
set.add("hello1");//向容器中存储数据
set.add("hello2");
set.add("hello3");
set.add("hello4");
set.size(); //计算容器中有几条数据
set.isEmpty(); //判断容器是否为空
set.contains("hello4"); //判断容器中是否含有"hello04"字符串
set.remove("hello4"); //删除容器中内容为hello4的数据,由于Set容器中数据是无序的所以,在Set容器中没有删除指定下标的方法
//利用单向迭代器遍历
Iterator<String> it=set.iterator();//调用迭代器中的方法,以便之后利用迭代器遍历输出容器中的内容
//系统运行某位置时判断下一个位置是否存在元素
while (it.hasNext()){ //--->->--->-->---
String s2=it.next(); //得到每个位置得元素
System.out.println(s2);
}
set.clear(); //清楚容器中所有得元素
Map接口中的常用方法:
/**
* Map容器中基本方法的使用
*/
Map<Integer,String> map=new HashMap<>();
map.clear(); //清除map容器中所有的内容
map.remove(1); //删除指定key为几的元素
map.remove(1,"hello");//删除指定key值指定value的元素,必须从容器中找到与给的实参一样的才能删除成功,否则删除失败
map.put(1,"hello1"); //向map容器中添加元素,使用put()方法
map.put(2,"hello2");
map.put(3,"hello3"); //Map中key唯一化,但是value值不唯一
map.put(4,"hello4");
System.out.println(map.get(1)); //获取key=1的value值
Collection<String> values = map.values();//获取map容器中所有value的集合
System.out.println(map.containsKey(1)); //判断容器中是否存在key=1,存在则返回true,否则否则返回false
map.size(); //获取map容器中含有几条数据,,例如以上就会输出4条数据
Map中遍历方式:
foreach遍历:
/**
* Map容器中的遍历方式----增强for循环(foreach)
*/
//首先获得map容器中所有的key值,即使用keySet()方法
Set<Integer> set=map.keySet(); //获取map中所有的key
for(Integer it2:set){
int i1=it2; //自动发生拆箱事件
//然后将获得的key值查询到其对应的value值,即使用get()方法
System.out.println(it2+" ------- "+map.get(i1)); //将map容器中的内容遍历出来
}
迭代器方式(Iterator):
/**
* Map容器中的遍历方式----迭代器方式(Iterator)
*/
//首先获取map容器中的key集合,将key放入迭代器中进行遍历,进而取出不同的key所对应的值
Iterator<Integer> iter1=set.iterator(); //将key值放入到迭代器中
while(iter1.hasNext()){ //判断该位置的下一位置是否存在元素
int i2=iter1.next(); //获取遍历的元素
System.out.println(map.get(i2)); //将遍历的key值作为实参遍历出其value值
}
Entry方式(entrySet):
/**
* Map容器中的遍历方式----Entry方式(entrySet)
*/
Set<Entry<Integer,String>> entries=map.entrySet();
/**
* Entry方式中的增强for循环
*/
//利用Entry接口中的getValue()方法获得value值
//利用Enntry接口中的getKey()方法获得key值
for (Entry<Integer,String> m2:entries){
System.out.println( m2.getKey()+"-----"+ m2.getValue());
}
/**
* Entry方式中的迭代器遍历
*/
Iterator<Entry<Integer,String>> it3=entries.iterator();
while(it3.hasNext()){
System.out.println(it3.next().getKey()+"------"+it3.next().getValue());
}
Collection遍历所有的:
/**
* 遍历所有Collection
*/
//这种方式仅仅是将map容器中的value值存储在Collection容器中
Collection<String> cll=map.values();
/**
* 遍历所有Collection---增强for循环
*/
for (String s3:cll){
System.out.println(s3);
}
/**
* 遍历所有Collection---迭代器
*/
Iterator<String> it4=cll.iterator();
while (it4.hasNext()){
System.out.println(it4.next());
}