Tag: 数组

Java:1-d数组在内存中是否总是连续的?

我读过很多关于这个主题的书籍和文章,以及我用’Unsafe’编写的一个小程序,表明Java中的1-d数组在内存中总是连续的。 它是由JLS决定的还是实施惯例? 要求提出这个问题。

如何向Array添加元素并移动索引?

我需要在Array中添加一个指定位置和值的元素。 例如,我有arrays int []a = {1, 2, 3, 4, 5, 6}; 应用addPos(int 4, int 87)之后应该是 int []a = {1, 2, 3, 4, 87, 5}; 我知道这应该是Array索引的转换,但是看不到如何在代码中实现它。

Javagenerics和数组初始化

以下是什么解释: public class GenericsTest { //statement 1 public ArrayList[] lists; public GenericsTest() { //statement 2 lists = new ArrayList[4]; } } 编译器接受语句1.语句2由编译器标记为“通用数组创建”。 我已经看到关于禁止generics数组的一个很好的解释就是这个 ,认为由于数组是协变的而且generics不是你可以在你允许generics数组的情况下颠覆generics类型。 撇开关于这种语言是否应该极端地在generics的处理中创造这种复杂的不一致性的争论,无论你怎么努力都让你不能自己开枪(如果有人知道关于亲戚的任何好的讨论)问题的优点/缺点请发布,我有兴趣看看论点),如果(2)不是,为什么应该允许声明(1)?

在Java中是否可以覆盖Objects数组的’toString’?

在Java中是否可以覆盖Objects数组的toString? 例如,假设我创建了一个简单的类User (由于这是一个普遍的问题,因此它不属于哪个类)。 是否有可能,一旦客户端创建User[]数组并且客户端使用System.out.print(array) ,它就不会打印数组的地址而是自定义toString() ? PS:当然我不能在我的类中覆盖toString() ,因为它与单个实例有关。

比较Java中的两个基元数组?

我知道Arrays.deepEquals(Object [],Object [])但这对原始类型不起作用(由于数组和自动装箱的限制,请参阅此相关文章 )。 考虑到这一点,这是最有效的方法吗? boolean byteArrayEquals(byte[] a, byte[] b) { if (a == null && b == null) return true; if (a == null || b == null) return false; if (a.length != b.length) return false; for (int i = 0; i < a.length; i++) { if (a[i] != b[i]) return false; } return […]

int 数组(从最低到最高排序)

所以我不确定为什么这对我来说变得如此困难,但我需要从高到低,从低到高排序。 从高到低我有: int a, b; int temp; int sortTheNumbers = len – 1; for (a = 0; a < sortTheNumbers; ++a) { for (b = 0; b < sortTheNumbers; ++b) { if (array[b] < array[b + 1]) { temp = array[b]; array[b] = array[b + 1]; array[b + 1] = temp; } } } 但是,我不能为我的生活让它反向工作(从低到高),我已经考虑过逻辑,它总是为所有值返回0。 […]

Hibernate,Postgres和Array Type

我在使用hibernate 4.1.0映射的postgresql 9.3中使用数组类型时遇到了一个特定的问题。 这种类型允许我拥有非常强大的数据模型,而无需构建大量的表和连接。 为了映射使用此特定类型存储的字段,我使用了UserType 无论如何,它适用于纯hibernate(hql),但我还需要将sql本机查询发送到我的数据库。 当我这样做时,尽管尝试了很多次,但我还没有找到任何办法。 我尝试了很多基于此的语法 String[] values = {“value1”, “value2”}; String queryString = “SELECT * FROM instances WHERE values && :values”; Query query = this.getSession().createSQLQuery(queryString).addEntity(Instance.class); query.setParameterList(“values”, values); query.list(); 我得到的运算符不存在:text [] &&字符变化 它应该在jdbc中给出以下语法:[‘value1’,’value2’]并且它似乎给’value1’… 我试过很多语法 采集 纯arrays [:values]语法:我在“[”附近出现语法错误 我需要发送本机查询,因为我使用Materialized View来提高性能。 我的SQL查询在postgresql控制台中有效。 所以这是一个特定于hibernate的问题。

在Java中对Array的ArrayList进行排序

在Java中对ArrayList进行排序的最佳方法是什么? String []是…… String[] = new String[] { “abc”, “abc”, “abc”, “abc”, “abc”, “abc”, “abc” }; 现在我想用String []的第二个值(在索引1处)对整个ArrayList进行排序。 我需要循环遍历每个String [],然后循环遍历索引1处的子节点。 有任何想法吗? EDITED 我有更多的描述。 我实际上从一些XML文件获取学校,XML中的每个节点都有7个属性。 现在我正在创建一个String []的ArrayList,它从XML中保存那些学校节点,而String []数组本身保存着特定节点的属性。 现在,我想对它进行排序的方式是,它应该根据学校的状态进行排序,这是XML中的第二个属性和ArrayList中String []中的索引1。 我需要首先遍历每个学校(XML中的节点,Java中的String [])然后我将必须过滤State(XML中的State属性,Java中的String [1])。 现在清楚了吗?

如何将短数组转换为字节数组

我发现将一个短数组转换为字节数组 , 将字节数组转换 为短数组 ,但不是短数组转换为字节数组。 以下是导致转换的代码 while(!stopped) { Log.i(“Map”, “Writing new data to buffer”); short[] buffer = buffers[ix++ % buffers.length]; N = recorder.read(buffer,0,buffer.length); track.write(buffer, 0, buffer.length); byte[] bytes2 = new byte[N]; 我努力了 int i = 0; ByteBuffer byteBuf = ByteBuffer.allocate(N); while (buffer.length >= i) { byteBuf.putShort(buffer[i]); i++; } bytes2 = byteBuf.array(); 和 ByteBuffer.wrap(bytes2).order(ByteOrder.LITTLE_ENDIAN).asShortBuffer().put(buffer); 但是我在两者上都收到了这个错误(错误如果不完全相同但两者非常相似): 05-29 […]

在Java中的数组初始值设定项中使用尾随逗号的数组

数组初始值设定项可用于在编译时初始化数组。 如下所示的带尾随逗号的初始化程序编译良好。 int a[][] = {{1,2,} ,{3,4,} , {5,6,},}; //Trailing commas cause no compiler error for(int i=0;i<a.length;i++) { for(int j=0;j<2;j++) { System.out.print(a[i][j]+"\t"); } System.out.println(); } 输出: 1 2 3 4 5 6 通过上述讨论,对于一维数组也是合法的。 int[] b = {1, 2, 3, 4, 5, 6,}; //A trailing comma causes no compiler error for(int i=0;i<b.length;i++) { System.out.print(b[i]+"\t"); } 输出: […]