集合框架

第一个,Collection set ? 特点:存取无序,元素不可以重复,无下标
【集合框架】? 一般使用HashSet
? 添加重复元素时,第二次添加,set自动过滤掉重复元素

String str = "today i donot doing anything,i just lay in my bed"; String[] strings = str.split("[, ]{1,}"); //这个地方使用正则表达式 Set s = new HashSet<>(); for (String strone : strings) { s.add(strone); } for (String ss : s) { System.out.println(ss); }

list ? 存储有序,有索引,可以根据索引来进行取值,元素可以重复
List list = new ArrayList(); list.add("接口1"); list.add("接口2"); list.add("接口3"); // 第一种遍历方式,使用迭代器 Iterator it = list.iterator(); while(it.hasNext()){ String next = it.next(); System.out.println(next); } System.out.println("-------------------"); // 第二种遍历方式,使用foreach for (String str : list){ System.err.println(str); } }

第二个 Map ? 特点,存取无序,键值对形式,键不可重复
? 其存储的方式是按对出现的
? key和value
?
创建map
Map map=new HashMap<>(); for(String cur:strings){ if (map.containsKey(cur)){ Integer val=map.get(cur); map.put(cur,val+1); }else { map.put(cur,1); } }

循环map
循环map: 第一种: 首先去获得map的所有的key,然后遍历这些key,去取key对应的value 第二种:(推荐使用) 使用map中的代表“键值对”概念中对的Map,Entry类 第三种:(本质是第一种的变体) 通过迭代器,获得map的key的迭代器,通过迭代器去循环所有的key,然后通过 key来获得所有的值

//第一种 for(String key:map.keySet()){ Integer val=map.get(key); System.out.println(key+":"+val); } //第二种 for(Map.Entry entry:map.entrySet() ){ System.out.println(entry.getKey()+":"+entry.getValue()); }//第三种 Iterable keyIterator= (Iterable) map.keySet().iterator(); while(((Iterator) keyIterator).hasNext()){ String key=keyIterator.next(); Integer val=map.get(key); System.out.println("..."); }

Multiset guava中封装的集合
? 特点:允许放多个重复的对象
? 注意:Mutilset虽然在功能和逻辑上是set的扩展,但是其实他是继承了collection的子类
? 具体使用,创建使用的是HashMultiset的和实现类
?
Multiset set=HashMultiset.create(); for(String cur:array){ set.add(cur); } for(String cur:array){ System.out.println(cur+":"+set.count(cur)); }

    推荐阅读