TreeMap集合根据指定元素,进行删除和修改的实现及注意事项,如:根据key值中的姓名进行删除和修改


TreeMap根据key中的指定元素进行删除修改


利用迭代器进行修改和删除,但是增强for只能进行修改,用来删除将会报错,则该方法不能进行删除,删除将报错,

凑巧要删除的是最后一个才能删除,所以此方式不可用来删除,但是可以修改使用,如果用来删除将会出现以下错误:

TreeMap集合根据指定元素,进行删除和修改bug梳理_迭代器



使用迭代器,能进行修改和删除

修改不会改变值得个数,修改可以使用迭代器,也可以直接使用增强for进行修改

@Override
public int compareTo(Student o) {
int i = this.age - o.age;
Collator instance = Collator.getInstance(Locale.CHINESE);//因为值可能为汉字所以使用Collator静态方法,对汉字进行比较方法
i=i==0?instance.compare(this.name,o.name):i;
return i;
//return -i;//因为要从大到小,而默认规则是负数存左边,正数存右边,排序规则根据返回值而定的,所以直接加减负可以直接改变大小原则
}
public int compareTo(Student o) {

class Demo1 {
public static void main(String[] args) {
Student s1 = new Student("张三", 23);
Student s2 = new Student("李四", 24);
Student s3 = new Student("王五", 25);
Student s4 = new Student("赵六", 26);
TreeMap<Student, String> ts = new TreeMap<>();
ts.put(s1, "北京");
ts.put(s2, "上海");
ts.put(s3, "广东");
ts.put(s4, "深圳");
Set<Student> keySet = ts.keySet();
//迭代器删除方式,删除key的姓名为李四的键值对
Iterator<Student> iterator1 = keySet.iterator();
while (iterator1.hasNext()) {
Student key = iterator1.next();
if (key.getName().equals("李四")) {
iterator1.remove();//此时注意是用的迭代器的删除方法,而不是Map集合的删除方法,使用Map集合删除方法,此处会报错
}
}
//修改方式一:
//迭代器修改方式,将张三的值修改为郑州
Iterator<Student> iterator = keySet.iterator();
while (iterator.hasNext()) {
Student key = iterator.next();
if (key.getName().equals("张三")) {
ts.put(key, "郑州");
System.out.println("修改成功");

}
}
//bug代码:
/*
Iterator<Student> iterator = keySet.iterator();
while (iterator.hasNext()) {
if (iterator.next().getName().equals("张三")) {
ts.put(iterator.next(), "郑州");
}//此逻辑不会编译报错,运行也不报错,但是逻辑不通,,但是会修改到下一个key的值,迭代器的默认指向下一个原理
}*/

/*
//修改方式二,增强for修改
for (Student key : keySet) {
if (key.getName().equals("张三")){
ts.put(key,"郑州");
System.out.println("修改成功");
}
}
*/
System.out.println(ts);
System.out.println("遍历:");
for (Student key : keySet) {
String value = ts.get(key);
System.out.println(key.getAge() + "岁的" + key.getName() + "," + value);
}

}
}

效果如下

从小到大排序:

TreeMap集合根据指定元素,进行删除和修改bug梳理_ide_02



从大到小排序:


TreeMap集合根据指定元素,进行删除和修改bug梳理_ide_03