set:
/** * HashSet如何实现的不重复 * set集合无序,不可以重复同一个对象不可以保存进同一个集合,不同对象内容对象内容相同也不能进行保存进同意集合 * * 说到比较优先会想到equals方法,但是为了能提高比较效率我们需要使用hashcode值 * hashcode值就是将内容经hash计算返回的整数得值,如果两个对象的hashcode值不同,则证明这两个不同对象 * 但是如果hashcode值相同,我们需要进行之一比较,防止出现hashcode值相同内容不同的偶然事件 */
//set集合无序不可以重复 //同一个对象不能保存在同一个set集合中,同时不同对象内容相同也不能保存进同一个集合中 Set set=new HashSet(); String s1="hello"; String s2="hello"; String s3=new String("hello"); set.add(s1); set.add(s2); set.add(s3); set.add("zhangsan"); set.add(159); set.add(true); System.out.println(set);
迭代器:
Collection c=new ArrayList(); c.add("zhangsan"); c.add(123); c.add(99.5); c.add('A'); c.add(true); //集合使用迭代器进行遍历集 Iterator it=c.iterator(); //it.hasNext()表示游标,用于判断后面是否还有数据,如果有则返回true,否则为false while(it.hasNext()){ Object o=it.next();//next方法返回后面的值(取值) System.out.println(o); }
list:
小技巧:
List list =new ArrayList(); list.add("zhangsan"); list.add("lisi"); list.add("wangwu"); list.add("zhaoliu"); list.add("zhang"); System.out.println(list); //排序 //排序的核心使用的是compareTo的方法,例如字符串,是将其转换为字符数组,然后用字符比较 // 前面的表示A后面表示B; //如果A-B大于0则交换,否则小于等于0则顺序不变 Collections.sort(list); System.out.println(list); //乱序 Collections.shuffle(list); System.out.println(list); //反序 Collections.reverse(list); System.out.println(list);
/** * List有两个重要的实现类一个是ArrayList一个是linkedList * ArrayList底层是数组而linkedList底层是链表 * 数组:查询快 增删改慢 * 链表:查询慢 增删改快 * (注意实际问题实际分析,规律可能有变化) */ public class ListTest { public static void main(String[] args) { List list =new LinkedList(); list.add("zhangsan"); list.add(147); list.add(99.5); list.add('A'); list.add(true); System.out.println(list); //在指定索引的位置添加一个数据,原位置及后续的数据,往后移 list.add(2,"wangwu"); //通过索引,修改指定位置的数据 list.set(2,"zhaoliu"); //通过索引获取指定位置的数据 System.out.println(list.get(2)); //通过索引删除指定位置的数据 list.remove(2); System.out.println(list.indexOf('A')); //list 集合的遍历形式四种 //1.将集合转换成数组进行遍历 Object [] o=list.toArray(); for (Object o1:o){ System.out.println(o1+" "); } System.out.println(); //2.使用迭代器进行遍历 Iterator it =list.iterator(); while (it.hasNext()){ System.out.println(it.next()+" "); } System.out.println(); //3.佛如循环直接遍历 for (int i=0;i<list.size();i++){ System.out.println(list.get(i)+" "); } System.out.println(); //4.使用foreach进行遍历 for (Object o1:list){ System.out.println(o1+" "); } System.out.println(); //因为集合只能保存引用类型的数据,所以数组使用引用类型指定数组中的元素,所以基本数据类型 // 要使用包装类定义 Integer a[]={0,1,2,3,4,5,6,7,8,9}; List list1= Arrays.asList(a); System.out.println(list1);
map:
//map集合是以键值对的形式保存数据的,其中建不能重复,而值不做要求 Map map = new HashMap(); //put 方法用于将数组保存在map集合中 map.put("zhansan", 132); map.put(159, true); map.put(false, 'A'); map.put('a', 59); map.put(59.5, "wangwu"); System.out.println(map); //如果重复添加数据,最后一次的value值会将前面的数据覆盖掉,不会报错 map.put(false,'Z'); System.out.println(map); //get方法通过key获取对应的value值 System.out.println(map.get(false)); //通过key删除数据 map.remove('a'); System.out.println(map); //获取map集合的长度 System.out.println(map.size()); //map集合的遍历 //通用 Set setMap=map.entrySet(); Iterator it=setMap.iterator(); while (it.hasNext()){ Map.Entry entry=(Map.Entry)it.next(); //getkey获取是map集合中key-value中key的值 System.out.println(entry.getKey()); //getvalue获取是map集合中key-value中value的值 System.out.println(entry.getValue()); } //第二种特殊情况下遍历方式 Map map1=new HashMap(); map1.put("item0",159); map1.put("item1","zhangsan"); map1.put("item2",true); map1.put("item3",false); map1.put("item4",'A'); map1.put("item5",99.5); for(int i=0;i<map1.size();i++){ System.out.println(map1.get("item"+i)); }