java集合和数组随你转换_java集合和数组互相转换

java集合和数组随你转换_java集合和数组互相转换抽时间多了解集合框架和数组 不能只要是数组就会写 ArrayList 碰到键值对就是 HashMap 每次用到集合 我们都要像小和尚念经般的熟悉下面内容 a ListSetMap 是集合体系中最主要的三个接口 List 和 Set 继承自 Collection 接口 Map 也属于集合系统 但是和 Collection 不同 b Set 不允许重复 HashSet 和 TreeSet 是两个主要的实现类 值不

// 抽时间多了解集合框架和数组,不能只要是数组就会写ArrayList,碰到键值对就是HashMap

// 每次用到集合,我们都要像小和尚念经般的熟悉下面内容:

a) List Set Map是集合体系中最主要的三个接口,List和Set继承自Collection接口,Map也属于集合系统,但是和Collection不同:

b) Set不允许重复,HashSet和TreeSet是两个主要的实现类,值不能重复是最大的特点:

c) List有序且允许元素重复,ArrayList,LinkedList和Vector是三个主要的实现类,ArrayList是线程不安全的,

Vector是线程安全的,这两个底层都是由数组实现的,LinkedList是线程安全的,底层通过链表来实现的;

d) Map 是键值对集合,其中Key是集合,key是不能重复的(HashCode函数和equals函数决定的),value可以重复,HashMap,TreeMap和

Hashtable是Map的三个组要实现类,

HashTable 是线程安全的,不能存储null值,

HashMap是线程不安全的,可以存储null值;

e) Hashtable的contains(Object),指的是是否包含value而不是key

// HashTable 和HashMap 之间还有些文章要做:[推荐使用HashMap而不是HashTable]

Hashtable和HashMap类有三个重要的不同之处,第一个不同主要是历史原因,Hashtable是基于陈旧的Dictionary类的,

HashMap是Java 1.2引进的Map接口的一个实现。

也许最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。这就意味着,虽然你可以不用采取任何特殊的

行为就可以在一个多线程的应用程序中用一个Hashtable,但你必须同样地为一个HashMap提供外同步。一个方便的方法

就是利用Collections类的静态的synchronizedMap()方法,它创建一个线程安全的Map对象,并把它作为一个封装的对象

来返回。这个对象的方法可以让你同步访问潜在的HashMap。这么做的结果就是当你不需要同步时,你不能切断

Hashtable中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。

第三点不同是,只有HashMap可以让你将空值作为一个表的条目的key或value。HashMap中只有一条记录可以是一个空的

key,但任意数量的条目可以是空的value。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一

个空的值,那么get()将返回null。如果有必要,用containKey()方法来区别这两种情况。

一些资料建议,当需要同步时,用Hashtable,反之用HashMap。但是,因为在需要时,HashMap可以被同步,HashMap的

功能比Hashtable的功能更多,而且它不是基于一个陈旧的类的,所以有人认为,在各种情况下,HashMap都优先于Hashtable。

关于Properties

有时侯,你可能想用一个hashtable来映射key的字符串到value的字符串。DOS、Windows和Unix中的环境字符串就有一

些例子,如key的字符串PATH被映射到value的字符串C:\WINDOWS;C:\WINDOWS\SYSTEM。Hashtables是表示这些的一个简

单的方法,但Java提供了另外一种方法。

Java.util.Properties类是Hashtable的一个子类,设计用于String keys和values。Properties对象的用法同Hashtable

的用法相象,但是类增加了两个节省时间的方法,你应该知道。

Store()方法把一个Properties对象的内容以一种可读的形式保存到一个文件中。Load()方法正好相反,用来读取文件,

并设定Properties对象来包含keys和values。

注意,因为Properties扩展了Hashtable,你可以用超类的put()方法来添加不是String对象的keys和values。这是不可取的。

另外,如果你将store()用于一个不包含String对象的Properties对象,store()将失败。作为put()和get()的替代,你应该

用setProperty()和getProperty(),它们用String参数。

// 数组拷贝的方法:

System.arraycopy

public static void arraycopy(Object src, int srcPos,Object dest,int destPos,int length)

Set set = new HashSet(Array.asList(array));

// 数组的浅拷贝与深拷贝:

// java中集合与数组之间的转化:

1) 采用集合.toArray() 方法,根据转化为数组的类型又可以分为:

转化为Object[] 类型数组

Object[] listArray = list.toArray();

Object[] setArray = set.toArray();

2) 转化为具体的数组:(参数为数组对象::)

String[] listArray = (String[])list.toArray(new String[0]);

String[] listArray = (String[])list.toArray(new String[list.size()]);

String[] setArray = (String[])set.toArray(new String[0]);

String[] setArray = (String[])set.toArray(new String[set.size()]);

3) 数组转化为集合 数组.asList()方法:

// 对于int[] 数组不能直接这样做,因为asList()方法的参数必须是对象

list = Arrays.asList(array);

// 使用list构造set

Set set = new HashSet(Array.asList(array));

4) 集合中赋值的方法

方法一:ArrayList list2= new ArrayList(list2);//利用集合自带的构造方法

方法二:ArrayList num2 =(ArrayList) list1.clone();//利用克隆的方法进行赋值

ArrayList list1=new ArrayList();

ArrayList list2=new ArrayList();

list1.addAll(list2);

boolean Collection.addAll(Collection extends E> c)

5) 为了方便的对Array对象,Collection对象进行操作,Java中提供了Arrays类和Collections类对其进行操作。

其中Arrays和Collections中所有的方法都为静态的,以方便直接传入对象引用,执行相应的功能。

十分常用的方法有:

Arrays.asList(数组对象) //此静态方法用于将Array转化为List类型对象。常常用于List类型对象的初始化中。

// 值得注意的是collection对象.addAll(list对象),注意此处是collection对象而非Collections类

Collection.addAll(Collection对象,数组对象或可变参数列表 ) //该静态方法用于向一个已经存在的Collection中拼接数据

6) Util.Collections工具类

static boolean addAll(Collection super T> c, T… a)

// 要求目标集合已存有的元素数量多于源集合

static void copy(List super T> dest, List extends T> src)

static > void sort(List list)

// String类实现 Comparable了接口

根据元素的自然顺序 对指定列表按升序进行排序。列表中的所有元素都必须实现 Comparable 接口。

List list1 = new ArrayList();

Collections.addAll(list1, “5”, “3”, “2”, “4”);

Collections.sort(list1);     // 查询出所有的配置项

autoArchiveList = autoArchiveService.queryRequestType(new HashMap(), page);

for (Map map : autoArchiveList)

{

for(Iterator> ite = map.entrySet().iterator(); ite.hasNext();)

{

Map.Entry entry = (Map.Entry) ite.next();

if (“SERVICENAME”.equalsIgnoreCase(entry.getKey()) && StringUtils.isEmpty((String)entry.getValue()))

{

archiveList4Temp.add(map);

}

}

}

// 如果非业务类别相关配置从autoArchiveList移除

autoArchiveList.removeAll(archiveList4Temp);

if (dataSet != null )

{

Object value = null;

Map voMap = null;

for (; dataSet.next(); list.add(voMap))

{

voMap = new HashMap();

List columnNames = dataSet.getColumnNames();

String columnName;

for (Iterator iterator = columnNames.iterator(); iterator.hasNext(); voMap.put(columnName, value))

{

columnName = (String)iterator.next();

value = dataSet.getObject(columnName);

}

}

}

public Map bulidQueryData()

{

ActionContext aCtx = ActionContext.getContext();

Map requestParamMap = aCtx.getParameters();

Map queryMap = new HashMap();

if (null == requestParamMap || requestParamMap.isEmpty())

{

return queryMap;

}

for (Iterator it = requestParamMap.entrySet().iterator(); it.hasNext(); )

{

Entry entry = it.next();

String[] value = (String[])entry.getValue();

if ((null != value) && (value.length > 0))

{

queryMap.put((String)entry.getKey(), value[0].trim());

}

}

return queryMap;

}

// 注意格式,为每一行代码负责

public String getDictValue(String id,String dataDictId)

{

List categoryList = UIDataProvider.getCategoryListFromDataDictId(dataDictId);

for(Value category:categoryList)

{

if(category.getId().equals(id))

{

return category.getName();

}

}

return “”;

}

String SubLevel = getDictValue(“1″,”QINGYUAN.HUAKE.EMP”);

if ((condition1 && condition2) || (condition3 && condition4) || !(condition5 && condition6))

{

doSomthingAoutIt();

}

alpha = (aLongBooleanExpression) ? beta : gamma;

for (initialization; condition; update)

{

statements;

}

设法让你的程序结构符合目的

if (booleanException) { return true;else { return false;}

应该代之以如下方法:return booleanException;

类似地:

if (condition) {return x;}return y;

应该写为:return (condition ? x : y);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199011.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午2:03
下一篇 2026年3月26日 下午2:03


相关推荐

  • unity调用animation_unity随机地图

    unity调用animation_unity随机地图Unity小科普老规矩,先介绍一下Unity的科普小知识:Unity是实时3D互动内容创作和运营平台。包括游戏开发、美术、建筑、汽车设计、影视在内的所有创作者,借助Unity将创意变成现实。Unity平台提供一整套完善的软件解决方案,可用于创作、运营和变现任何实时互动的2D和3D内容,支持平台包括手机、平板电脑、PC、游戏主机、增强现实和虚拟现实设备。也可以简单把Unity理解为一个游戏引擎,可以用来专业制作游戏!Unity踩坑小知识点学习Unity使用Q..

    2026年4月16日
    4
  • 内网渗透_IPC

    内网渗透_IPC内网渗透 IPC0x01 什么是 IPCIPC 共享命名管道资源 其实就是为了实现进程间通信而开放的命名管道 IPC 可以通过验证用户名和密码获得相应的权限 通常在远程管理计算机和查看计算机的共享资源使用简单理解 可以访问目标机器上的文件 上传 下载 也可以在目标标机器上运行命令上传和下载文件直接通过 copy 命令就可以 不过路径缓存 UNC 路径什么是 UNC 路径 就是以 开头的路径就是 UNC 路径 比如 10 10 10 10 c users0x02 IPC 的利用条件开启了 1

    2026年3月17日
    2
  • Java工程师自我评价(软件工程师自我评价)

    JAVA工程师简历自我评价无论在学习、工作或是生活中,我们都可能会使用到自我评价,自我评价具有重要的社会功能,它极大地影响人与人之间的交往方式。那要怎么写好自我评价呢?以下是小编收集整理的JAVA工程师简历自我评价,仅供参考,希望能够帮助到大家。JAVA工程师简历自我评价11、有较强的分析、解决问题的能力,具有较强逻辑思维能力和表达能力。2、性格开朗,积极乐观,能以极大的’热情投入工作。3、具…

    2022年4月15日
    49
  • 〖Python〗– Git大全

    〖Python〗– Git大全【初识及基本操作】一、什么是Git?定义:Git是分布式版本控制系统。1.1什么是版本控制我们可以回想以下,在我们上学毕业要写论文或是准备一份演讲稿的时候,都会用文件去保存和管理一些文档之类的

    2022年7月5日
    22
  • 线程的定义及特点_linux线程创建函数

    线程的定义及特点_linux线程创建函数1.加入头文件#include"afxmt.h"2.定义一个全局的锁CRITICAL_SECTION的实例和一个静态变量CRITICAL_SECTIONcs;//可以理解为锁定一

    2022年8月2日
    9
  • 手把手教你如何微信公众号开发「建议收藏」

    手把手教你如何微信公众号开发「建议收藏」   最近的话,发现微信开发其实也有很多挺有意思的地方,比如最近很火的一款游戏“跳一跳”,也让我如此着迷。。但是,今天我所要讲的并不是对于小程序的开发,而是要说一下,关于微信开发的另外一个内容,那就是微信公众号。。  关于,什么是微信公众号,微信公众号怎么申请,这个我就不多说,这些基本的概念不在这里进行讲解,自己可以直接百度就可以找到很多的资源。而我主要讲解一下关于微信公众号开发中,一…

    2022年8月21日
    12

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号