集合体系
Collection集合
//Collection常用方法 public class TeacherTest { public static void main(String[] args) { Collection<String> c = new ArrayList<>();//多态实现 //添加元素 c.add("java"); c.add("javase"); c.add("javaee"); System.out.println(c); System.out.println(c.add("javaee"));//add永远返回true //移除元素 c.remove("java"); System.out.println(c); //包含元素 System.out.println(c.contains("java")); //是否为空 System.out.println(c.isEmpty()); //集合大小 System.out.println(c.size()); //清空集合 c.clear(); System.out.println(c); } }
//集合的遍历:迭代器iterator iterator: Iterator<E> iterator():迭代器,通过实现类的iterator()方法得到迭代器; iterator常用方法: E Next():返回迭代器中的下一个元素; boolean hasNext():如果迭代器中具有更多元素,返回true; public class Test { public static void main(String[] args) { Collection<String> c = new ArrayList<>(); c.add("javase"); c.add("javaee"); c.add("javabe"); //实例化迭代器 Iterator<String> it = c.iterator(); while (it.hasNext()){ System.out.println(it.next()); } } }
List集合
public class Test { public static void main(String[] args) { List<String> l = new ArrayList<>(); l.add("javase"); l.add("javaee"); l.add("javabe"); //实例化迭代器 Iterator<String> it = l.iterator(); while (it.hasNext()){ System.out.println(it.next()); } } }
//List特有方法,父类Collection没有,但子类ArrayList可以使用,基本上都是索引方法 //使用时注意索引越界异常 public class Test { public static void main(String[] args) { List<String> l = new ArrayList<>(); l.add("javase"); l.add("javaee"); l.add("javabe"); //指定索引位置添加元素 l.add(1,"java"); //删除指定索引处的元素 l.remove(1); //修改 l.set(1,"hello"); //返回元素 l.get(1); } } //List可以使用索引遍历 for(int i = 0 ;i<l.size();i++){ System.out.println(l.get(i)); }
//并发修改异常 调用add()会增加一次实际修改次数。
//Listiterator迭代器 不常用 public class Test { public static void main(String[] args) { List<String> l = new ArrayList<>(); l.add("javase"); l.add("javaee"); l.add("javabe"); //实例化迭代器 Iterator<String> it = l.Listiterator(); while (it.hasNext()){ System.out.println(it.next()); } while (it.hasPrevious()){ System.out.println(it.pervios()); } } }
##
Set集合
//TreeSet 未重写 1.构建学生类 public class Student { private String name; private int age; public Student() {} public Student(String name, int age) { this.name = name; this.age = age; } public String getName() {return name;} public void setName(String name) {this.name = name;} public int getAge() {return age;} public void setAge(int age) {this.age = age;} } 2.Test类 public class Test { public static void main(String[] args) { TreeSet<Student> c = new TreeSet<>(); Student s1 = new Student("吕布", 20); Student s2 = new Student("貂蝉", 18); Student s3 = new Student("董卓", 40); c.add(s1); c.add(s2); c.add(s3); /*for(Student s :c){ System.out.println(s.getName()+s.getAge()); } 会直接报错,因为Student类没有实现Compareable接口并重写CompareTo方法*/ } }
//TreeSet 重写后 public class Student implements Comparable<Student>{ private String name; private int age; public Student() {} public Student(String name, int age) { this.name = name; this.age = age; } public String getName() {return name;} public void setName(String name) {this.name = name;} public int getAge() {return age;} public void setAge(int age) {this.age = age;} @Override public int compareTo(Student s) { //return 0;只输出吕布 //return 1;顺序输出 //return -1;倒序输出 //按年龄从小到大排序 int num = this.age - s.age; //年龄相同按照姓名字母排序 int num2 = num==0?this.name.compareTo(s.name):name return num2; } 2.Test类 public class Test { public static void main(String[] args) { TreeSet<Student> c = new TreeSet<>(); Student s1 = new Student("lvbu", 20); Student s2 = new Student("diaochan", 18); Student s3 = new Student("dongzhuo", 20); Student s4 = new Student("dongzhuo", 20); c.add(s1); c.add(s2); c.add(s3); c.add(s4); for(Student s :c){ System.out.println(s.getName()+s.getAge()); } } }
//匿名内部类 public class Test { public static void main(String[] args) { TreeSet<Student> c = new TreeSet<>(new Comparator<Student>() { @Override public int compare(Student s1, Student s2) { int num = s1.getAge() - s2.getAge(); //年龄相同按照姓名字母排序 int num2 = num==0?s1.getName().compareTo(s2.getName()):num return num2; } }); Student s1 = new Student("吕布", 20); Student s2 = new Student("貂蝉", 18); Student s3 = new Student("董卓", 40); Student s4 = new Student("dongzhuo", 20); c.add(s1); c.add(s2); c.add(s3); c.add(s4); for(Student s :c){ System.out.println(s.getName()+s.getAge()); } }
Map集合
//遍历方式一 public class Test { public static void main(String[] args) { Map<String,String> map = new HashMap<>(); map.put("张无忌","赵敏"); map.put("郭进","黄蓉"); map.put("杨过","小龙女"); Set<String> keys = map.keySet(); for (String key :keys){ System.out.println(key+':'+map.get(key)); } } }
public class TeacherTest { public static void main(String[] args) { Map<String,String> map = new HashMap<>(); map.put("张无忌","赵敏"); map.put("郭进","黄蓉"); map.put("杨过","小龙女"); Set<Map.Entry<String, String>> ens = map.entrySet(); for (Map.Entry<String, String> en :ens){ System.out.println(en.getKey()+":"+en.getValue()); //System.out.println(en) 这样可以遍历,不过中间的分隔符是=,说明重写过toString方法 } } }
public class Test { public static void main(String[] args) { ArrayList<HashMap<String,String>> array = new ArrayList<>(); HashMap<String,String> hm1 = new HashMap<>(); hm1.put("张无忌","赵敏"); hm1.put("郭进","黄蓉"); array.add(hm1); HashMap<String,String> hm2 = new HashMap<>(); hm2.put("张无忌","赵敏"); hm2.put("郭进","黄蓉"); array.add(hm2); HashMap<String,String> hm3 = new HashMap<>(); hm3.put("张无忌","赵敏"); hm3.put("郭进","黄蓉"); array.add(hm3); /* //方法一、 for (HashMap<String,String> hm : array){ Set<String> keys = hm.keySet(); for (String key :keys){ System.out.println(key+':'+hm.get(key)); } } */ /* //方法二、 for (HashMap<String,String> hm : array){ Set<Map.Entry<String, String>> ens = hm.entrySet(); for (Map.Entry<String, String> en :ens){ System.out.println(en); } } */ } }
public class TeacherTest { public static void main(String[] args) { HashMap<String,ArrayList<String>> hm = new HashMap<>(); ArrayList<String> sgyy = new ArrayList<>(); sgyy.add("赵云"); sgyy.add("张飞"); hm.put("三国演义",sgyy); ArrayList<String> xyj = new ArrayList<>(); xyj.add("孙悟空"); xyj.add("猪八戒"); hm.put("西游记",xyj); ArrayList<String> shz = new ArrayList<>(); shz.add("潘金莲"); shz.add("西门庆"); hm.put("水浒传",shz); Set<String> keys = hm.keySet(); for (String key :keys){ ArrayList<String> list = hm.get(key); for (String value :list){ System.out.println(key+","+value); } } } }
public class Test { public static void main(String[] args) { HashMap<Character,Integer> hm = new HashMap<>(); Scanner sc = new Scanner(System.in); System.out.println("请输入字符串"); String line = sc.nextLine(); for (int i = 0; i < line.length() ;i++) { char key = line.charAt(i); Integer value = hm.get(key); if (value == null){ hm.put(key,1); }else { value++; hm.put(key,value); } } StringBuilder sb = new StringBuilder(); Set<Character> chars = hm.keySet(); for (Character c: chars){ Integer i = hm.get(c); sb.append(c).append("(").append(i).append(")"); } System.out.println(sb.toString()); } }