您的位置:首页 > 编程语言 > Java开发

list,set练习和Map简述

2016-08-15 16:18 232 查看

任务一:

按字符串长度排序

定义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{

@Override
public int compare(Object o1, Object o2) {
// TODO Auto-generated method stub
if (!(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();       //遍历map

Iterator<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;
}
@Override
public 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());
}
}
运行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 集合