Tag: 数组

将LongBuffer / IntBuffer / ShortBuffer转换为ByteBuffer

我知道一种快速的方法将byte / short / int / long数组转换为ByteBuffer,然后获取一个字节数组。 例如,要将字节数组转换为短数组,我可以这样做: byte[] bArray = { 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }; ByteBuffer bb = ByteBuffer.wrap(byteArray); ShortBuffer sb = bb.asShortBuffer(); short[] shortArray = new short[byteArray.length / 2]; sb.get(shortArray); 产生如下的短数组: [256, 0, 0, 0, 256, 0, 0, 0] 。 […]

两个数组上的Java XOR

我必须在两个数组上应用xor,比如说我有: array_1: 1 0 1 0 1 1 array_2: 1 0 0 1 0 1 我想有一个函数接受两个数组并返回一个应用XOR的数组,所以在这种情况下我希望这个函数返回: returned_array: 0 0 1 1 1 0 请帮我算法..谢谢!

Java中的最大大小列表

在Java中拥有一个具有List的所有function但具有最大存储容量的数据结构对我来说很有用,并且在添加新数据时丢弃旧数据。 可以想象,在某些时候,我可能想要实现一个固定大小的队列,它保持数据的更一般顺序,并将旧数据丢弃在该顺序中最低,但这是未来的。 目前我正在实现它: public class FixedSizeList { private final int maxSize; private final LinkedList list = new LinkedList(); public FixedSizeQueue(int maxSize) { this.maxSize = maxSize maxSize ? list.remove() : null; } // add remaining methods… } 是否存在(a)满足我需求的现有数据结构,或者(b)实现此数据结构的更好方法?

静态数组如何存储在Java内存中?

所以在像C这样的语言中,内存分为5个不同的部分:OS内核,文本段,静态内存,动态内存和堆栈。 像这样的东西: 如果我们在C中声明了一个静态数组,那么你必须事先指定它的大小,然后才能永久修复它。 该程序将为arrays分配足够的内存,并按预期将其粘贴在静态数据段中。 但是我注意到在Java中你可以这样做: public class Test { static int[] a = new int[1]; public static void main( String[] args ) { a = new int[2]; } } 一切都会像你期望的那样奏效。 我的问题是,为什么这在Java中有效? 编辑:所以共识是Java中的int[]更像C中的int* 。因此作为后续问题,有没有办法在Java中的静态内存中分配数组(如果没有,为什么不呢) ? 这不会更快地访问这样的arrays吗? EDIT2:^现在这是一个新问题: 静态类变量存储在内存中的哪个位置?

类中的方法不能应用于给定的类型

我正在创建一个程序,在0到9之间生成100个随机整数,并显示每个数字的计数。 我正在使用十个整数的数组, 计数 ,以存储0s,1s,…,9s的数量。) 当我编译程序时,我收到错误: RandomNumbers.java:9:错误:类RandomNumbers中的方法generateNumbers不能应用于给定的类型; generateNumbers(); 必需:int [] 实测值:generateNumbers(); 原因:实际和正式的参数列表长度不同 我在main方法中调用方法generateNumbers()和displayCounts()的代码行出现此错误。 public class RandomNumbers { public static void main(String[] args) { //declares array for random numbers int[] numbers = new int [99]; //calls the generateNumbers method generateNumbers(); //calls the displayCounts method displayCounts(); } //***************************************************************** private static int generateNumbers(int[] numbers){ for(int i = 0; i […]

Java:将字节列表转换为字节数组

试图解决什么应该是一个简单的问题。 有一个Bytes列表,想要在函数末尾将它转换为一个字节数组。 final List pdu = new ArrayList(); …. return pdu.toArray(new byte[pdu.size()]);; 编译器不喜欢我的toArray上的语法。 如何解决这个问题?

将字符串转换为Sha-256哈希

我想将String转换为SHA-256哈希。 我正在使用此代码: String text = “YOLO”; MessageDigest digest = MessageDigest.getInstance(“SHA-256”); byte[] hash = digest.digest(text.getBytes(“UTF-8”)); System.out.println(hash.toString()); 问题是,当我启动程序时,它会打印出来 [B @ 28d93b30 这是为什么,怎么解决这个问题? 提前致谢, Fihdi

Java ArrayList如何添加类

我在尝试使用Java创建ArrayList时遇到了问题,但更具体地说是在尝试add()时。 我在people.add(joe);上遇到语法错误people.add(joe); 线… Error: misplaced construct: VariableDeclaratorId expected after this token. at people.add(joe); ^ 我的理解是,对于我的目的, ArrayList会比数组更好,所以我的问题是,是这样的情况,如果没有,我的语法错在哪里? 这是我的代码…… import java.util.ArrayList; public class Person { static String name; static double age; static double height; static double weight; Person(String name, double age, double height, double weight){ Person.name = name; Person.age = age; Person.height = height; Person.weight = weight; […]

同时对多个arrays进行排序“就地”

我有以下3个数组: int[] indexes = new int[]{0,2,8,5}; String[] sources = new String[]{“how”, “are”, “today”, “you”}; String[] targets = new String[]{“I”, “am”, “thanks”, “fine”}; 我想根据索引对三个数组进行排序: indexes -> {0,2,5,8} sources -> {“how”, “are”, “you”, “today”} targets -> {“I”, “am”, “fine”, “thanks”} 我可以创建一个包含所有三个元素的新类myClass : class myClass { int x; String source; String target; } 将所有内容重新分配给myClass,然后使用x对myClass进行排序。 但是,这需要额外的空间。 我想知道是否可以进行in place排序? 谢谢!

最后填充空字节的字节数组:如何有效地复制到较小的字节数组

有: [46][111][36][11][101][55][87][30][122][75][66][32][49][55][67][77][88][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0] 想: [46][111][36][11][101][55][87][30][122][75][66][32][49][55][67][77][88] 我有一个字节大小为8192的数组,从第一个数组中的某个索引开始,直到数组的结尾,字节都是空字节。 因此,数组末尾可能有6000个字节的值和2196个空字节。 如何有效地创建一个大小的新数组(6000)并复制这些字节? 注意:我不知道有多少空字节或带有值的字节。