java提高(4)---数组增删 list删除 map删除
数组增删 集合删除
一、数组增删
package com.test;
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
import java.util.HashSet; public class ArrayBlock { /* 去掉数组中重复的值 */
public static void testA() {
String [] str = {"cat", "dog", "pig", "dog",};
// 先把数组转为集合
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
if(!list.contains(str[i])) {
list.add(str[i]);
}
} /* toArray(T[] a)用法
* 因为list集合默认是object类型,那传入new String[2],首先有泛型作用
* 如果list长度大于2,那new String[2]只有泛型作用,如果长度等于2
* 那就用new String[2]这个数组,如果小于2, 那数组多余部分为null
*/
String[] newStr = list.toArray(new String[1]);
} //删除数组中其中一个元素
public static void testB() {
String [] str = {"cat", "dog", "pig", "dog",}; //删除pig
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
list.add(str[i]);
}
//list移除记得放外面
list.remove(2);
//返回一个包含所有对象的指定类型的数组
String[] newStr = list.toArray(new String[1]); } //在数组中增加一个元素
public static void testC() {
String [] str = {"cat", "dog", "pig", "dog",}; //增加pee
List<String> list = new ArrayList<String>();
for (int i=0; i<str.length; i++) {
list.add(str[i]);
}
// list.add()默认在集合最后插入数据,而 add(2, "pee")就指定在索引第二个位置插入
list.add(2, "pee");
String[] newStr = list.toArray(new String[1]);
}
}
二、集合删除数据
package com.test;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator; public class ListBlock { public void deliect() {
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c"); //方法一: 用for增强方法删除
for (String str : list) {
if (str.equals("a")) /* 在使用增强for循环的过程不能对元素进行删除、修改、增加的操作等操作。
* 但是,如果操作一下,立刻break跳出,也是不会报错的!
*/
list.remove(str);
} //方法二:使用传统for循环遍历
for (int i = 0; i < list.size(); i++) {
String str = list.get(i);
if (str.equals("a")) {
/* 不会报错,但会少都一条信息, 因为执行删除操作;删除完成,则集合后边的元素会自动前移,
* 导致下次遍历漏掉一个元素,所以少删后面那个元素。
* 解决方法:在remove();方法下写上 --i;
*/
list.remove(i);
}
} //方法三:使用api提供的方法list.iterator(),这个方法不会出现问题
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String str = iterator.next();
if (str.equals("a")) {
iterator.remove();
}
}
}
}
三、map集合删除数据
package com.test;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator; public class ListBlock { public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("1", "one");
map.put("2", "two");
map.put("3", "three");
map.put("4", "four"); // 删除元素
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, String> entry = it.next();
String key = entry.getKey();
int k = Integer.parseInt(key);
if (k % 2 == 1) { /*iterator的remove()方法,也有需要我们注意的地方:
* 每调用一次iterator.next()方法,只能调用一次remove()方法。
* 调用remove()方法前,必须调用过一次next()方法。
*/
it.remove();
}
}
}
}
大家看下哪里不对,或者需要补充的,欢迎指点。
java提高(4)---数组增删 list删除 map删除的更多相关文章
- 【java提高】---数组增删 list删除 map删除
数组增删 集合删除 1.数组增删 package com.test; import java.util.List; import java.util.ArrayList; import java.ut ...
- Java提高篇(三三)-----Map总结
在前面LZ详细介绍了HashMap.HashTable.TreeMap的实现方法,从数据结构.实现原理.源码分析三个方面进行阐述,对这个三个类应该有了比较清晰的了解,下面LZ就Map做一个简单的总结. ...
- java提高篇(十九)-----数组之二
前面一节主要介绍了数组的基本概念,对什么是数组稍微深入了一点点,在这篇博文中主要介绍数组的其他方面. 三.性能?请优先考虑数组 在java中有很多方式来存储一系列数据,而且在操作上面比数组方便的多?但 ...
- java中将数组、对象、Map、List转换成JSON数据
如果要将数组.对象.Map.List转换成JSON数据,那我们需要一些jar包: json-lib-2.4-jdk15.jar ezmorph-1.0.6.jar commons-logging.ja ...
- Java——删除Map集合中key-value值
通过迭代器删除Map集合中的key-value值 Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext() ...
- Java 集合(List、Set、Map 等)相关问答归纳再整理
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- Java提高(一)---- HashMap
阅读博客 1, java提高篇(二三)-----HashMap 这一篇由chenssy发表于2014年1月,是根据JDK1.6的源码讲的. 2,Java类集框架之HashMap(JDK1.8)源码剖析 ...
- JAVA提高十二:HashMap深入分析
首先想说的是关于HashMap源码的分析园子里面应该有很多,并且都是分析得很不错的文章,但是我还是想写出自己的学习总结,以便加深自己的理解,因此就有了此文,另外因为小孩过来了,因此更新速度可能放缓了, ...
- Java集合排序及java集合类详解--(Collection, List, Set, Map)
1 集合框架 1.1 集合框架概述 1.1.1 容器简介 到目前为止,我们已经学习了如何创建多个不同的对象,定义了这些对象以后,我们就可以利用它们来做一 ...
随机推荐
- docker私库Harbor部署(转载)
系统环境 centos7.3docker-ce docker version: 18.03.0docker-compose version: 1.21.0 Install Docker CE 安装依赖 ...
- rn下的弹性布局
重点: 1]react native 下的弹性布局名字叫:flexDirection 2]flexDirection的默认值是column而不是row,而flex也只能指定一个数字值. 3]使用fle ...
- vue + spring boot + spring security 前后端分离 携带 Cookie 登录实现 只写了个登录
最近想弄一下vue 所以就自己给自己找坑入 结果弄的满身是伤 哈哈哈 首先我说下 前后端分离 跨域请求 我在网上找了一些 可是都是针对于 spring boot 的 我自己还有 securi ...
- abaqus修改inp直接建立工程
前面已经知道,通过修改以下inp的节点和单元编号,就可以新建模型,可是对于大的工程来说,逐个选取单元进行添加材料以及确定哪步进行填土仍是比较麻烦的(如果工程网格划分好并告知哪些单元好属于哪些材料,哪些 ...
- 在Java中使用Socket模拟客户端和服务端(多线程)
1:Socket与ServerSocket的交互 2.Socket和ServerSocket介绍 Socket 构造函数 Socket() Socket(InetAddress address, in ...
- 解决jenkins shell执行sonar-scanner提示命令存在的问题
通过jenkins的以下三个方式去执行sonar-scanner,抛如下错误. Send files or execute commands over SSH before the build sta ...
- Spring Boot Externalized Configuration
https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html Ex ...
- CSS伪类的理解
因为之前一直对css伪类没有过多的了解,在网上看到一段css代码,不能理解 a:hover span.title{ color:red; ......... } 现通过查询css手册,其实css伪类只 ...
- xx系统属性分析
在本周的课程学习当中,我们简单了解到系统的一些属性,同时在课下也对<大型网站技术架构:核心原理与案例分析>进行了初步的阅读. 在书籍中我看到了许多其他的知识,也对课堂学习的知识有了巩固,现 ...
- 2.Spring 拦截器应用
首先咱们来了解一下具体的业务场景(这个跟第一篇中的很相似但有不同):具体的业务是这样的,现在系统中有六十多个主档(功能模块),每个主档都有新增.修改.删除功能,当我们在对每个主档做这些操作时需要对其记 ...