list,set练习和Map简述

来源:互联网 发布:程序员的发展趋势 编辑:程序博客网 时间:2024/05/19 07:09

任务一:

按字符串长度排序

定义TreeSet集合

public static void main(String[] args) {Com com = new Com();            Set set = new TreeSet(com);      // 传入参数set.add("adn");set.add("ndlkdj");set.add("bv");set.add("acfun");set.add("bilibili");System.out.println(set);}}

定义类接comparator接口

class Com implements Comparator{@Overridepublic int compare(Object o1, Object o2) {// TODO Auto-generated method stubif (!(o1 instanceof String && o2 instanceof String)) {throw new RuntimeException();}String s1 = (String) o1;String s2 = (String) o2;if (s1.length()>s2.length()) {return 1;}else if (s2.length()>s1.length()) {return -1;}if (s1.length()==s2.length()) {            //避免两个字符串长度相时的情况。进行内容比较return s1.compareTo(s2);}else {return s1.length()>s2.length()?1:-1;}//return 0;}}
运行结果

任务二:

将字符串"90 -7 0 18 2 45 4"中的数值进行排序。

public static void main(String[] args) {Set set = new TreeSet<>();String str = "90 0 -3 56 24 26";String[] split = str.split(" ");          //空格切割字符串for (int i = 0; i < split.length; i++) {     //遍历数组String stri = split[i];set.add(Integer.valueOf(stri));     //装箱成Integer类}System.out.println(set);}

Map集合

HashMap     和    遍历取出元素

往后写集合时,要注意加上泛型

public static void main(String[] args) {Map<String,String> map = new HashMap<>();map.put("a", "暴风");map.put("b", "影音");map.put("s", "网址");Set<Entry<String, String>> entrySet = map.entrySet();       //遍历mapIterator<Entry<String, String>> iterator = entrySet.iterator();while (iterator.hasNext()) {Entry<String, String> entry = iterator.next();entry.getKey();entry.getValue();System.out.println(entry.getKey()+entry.getValue());}}

更复杂一点的map两种遍历方法

class Student{private String name;private int num;public Student(String name, int num){this.name = name;this.num = num;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getNum() {return num;}public void setNum(int num) {this.num = num;}@Overridepublic String toString() {return "Student [name=" + name + ", num=" + num + "]";}}

主方法先定义list集合,在声明map集合

List<Student> list = new ArrayList<>();list.add(new Student("sara",22));list.add(new Student("nokita",23));list.add(new Student("hakii",25));list.add(new Student("whales",26));Map<String,List> map = new HashMap<>();                 //注意泛型map.put("andriod", list);

遍历方法一:while嵌套循环

Set<Entry<String, List>> entrySet = map.entrySet();             //方法一Iterator<Entry<String, List>> iterator = entrySet.iterator();while (iterator.hasNext()) {                                       //while循环嵌套Map.Entry<String, List> entry = (Map.Entry<String, List>) iterator.next();String firstname = entry.getKey();List<Student> list2 = entry.getValue();Iterator<Student> iterator2 = list2.iterator();      while (iterator2.hasNext()) {Student student = iterator2.next();System.out.println(firstname+"---"+student.getName()+"...."+student.getNum());      //获取名字和姓名}}

遍历方法二:高级for循环(更简洁)

//for (集合中的元素类型        变量名 : 要遍历的集合) {//}高级for循环for (Entry<String, List> entry : entrySet) {                //方法二String key = entry.getKey();List<? extends Student> value = entry.getValue();for (Student student : value) {System.out.println(key +"----"+student.getName()+"----"+student.getNum());}}
运行结果





0 0