编写一个函数来确定数组中的最小/最大值是很简单的,例如:
/**
*
* @param chars
* @return the max value in the array of chars
*/
private static int maxValue(char[] chars) {
int max = chars[0];
for (int ktr = 0; ktr < chars.length; ktr++) {
if (chars[ktr] > max) {
max = chars[ktr];
}
}
return max;
}
Run Code Online (Sandbox Code Playgroud)
但这不是已经在某处做过的吗?
如果您有一个具有基本类型的Java对象数组(例如Byte,Integer,Char等).有没有一种简洁的方法我可以将它转换为原始类型的数组?特别是可以在不必创建新数组并遍历内容的情况下完成此操作.
例如,给定
Integer[] array
Run Code Online (Sandbox Code Playgroud)
什么是将其转换为最佳方式
int[] intArray
Run Code Online (Sandbox Code Playgroud)
不幸的是,当Hibernate与我们无法控制的某些第三方库之间进行交互时,我们必须经常这样做.这似乎是一个非常常见的操作,所以如果没有捷径我会感到惊讶.
谢谢你的帮助!
我能想到这些东西,
Arrays.asList(byte[])
转换byte[]
为List<byte[]>
,我只是想知道是否有任何库函数可以做到这一点?
为什么我不能在java中这样做?
Object[] o = (Object[])(new int[]{0,1,2,3.14,4});
Run Code Online (Sandbox Code Playgroud)
我有一个方法接收一个对象,然后将其表示为一个字符串,但取决于他的类型(原始,原始包装,数组等).当我创建一个Unit测试时,我将一个数组作为Object传递,这是好的,但当我执行该对象的转换为Object []时,我得到了ClassCastException.这只发生在原始类型数组中.有什么方法可以避免这种行为吗?如果没有,有人可以解释在Java虚拟机上这种行为的原因是什么.
非常感谢任何帮助.
有没有任何实用工具方法将数值类型列表转换为基本类型数组?换句话说,我正在寻找比这更好的解决方案.
private long[] toArray(List<Long> values) {
long[] result = new long[values.size()];
int i = 0;
for (Long l : values)
result[i++] = l;
return result;
}
Run Code Online (Sandbox Code Playgroud) 我有一个ArrayList
叫out
,我需要把它转换为double[]
.我在网上找到的例子说了两件事:
第一次尝试:
double[] d = new double[out.size()];
out.toArray(d);
Run Code Online (Sandbox Code Playgroud)
但是,这会产生错误(eclipse):
The method toArray(T[]) in the type List<Double> is not applicable for the arguments (double[]).
Run Code Online (Sandbox Code Playgroud)
我找到的第二个解决方案是在StackOverflow上,并且是:
double[] dx = Arrays.copyOf(out.toArray(), out.toArray().length, double[].class);
Run Code Online (Sandbox Code Playgroud)
但是,这会产生错误:
The method copyOf(U[], int, Class<? extends T[]>) in the type Arrays is not applicable for the arguments (Object[], int, Class<double[]>)
Run Code Online (Sandbox Code Playgroud)
是什么导致了这些错误,如何out
在double[]
不创建这些问题的情况下转换为?out
确实只有双重价值.
谢谢!
我对java真的很陌生。我想出了一些我真的无法理解的事情。我知道Double是一个包装类,您可以在所述类的对象中包装一个 double 值。所以看起来像这样的代码可以正常工作
double pi = 3.14;
Double tempVariable = new Double(pi);
Run Code Online (Sandbox Code Playgroud)
因此,它似乎完全合乎逻辑的,我认为,因为我可以换一个双到双,这将是容易包装一个双[]的双[] 。但事实并非如此。我尝试了我能想到的所有方法(语法更改 - 创建一个包含上述double[] 的Object 类型的对象,然后转换为 Double[],将Double对象当作数组处理),但这些都不起作用。
我正在使用 j2me。
大家有什么建议吗?
@MightyPork:这是我尝试做的第一件事。我认为,试图做到这一点的代码如下:
public Double[] modelWeights = new Double[9];
modelweights = {-1.31,1.39,-0.36,1.55,1.55,-2.03,2.25,2.27,-0.72};
Run Code Online (Sandbox Code Playgroud)
但这行不通。我不知道为什么。
@Abimaran Kugathasan:: 我昨天看到了ArrayUtils,这将是一个很好的解决方案,但我使用的是 j2me,而 j2me中没有实现List或HashSet(ArrayUtils所需的)等类。我错过了什么吗?
编辑:: Abimaran Kugathasan 链接的线程确实有其他与 fge 的答案非常接近的答案。谢谢大家的评论。
我正在尝试使用此功能,但它给出的索引为 -1。那我能做什么
int[] veer = {14,25,14,56,15,36,56,77,18,29,49};
int a = Arrays.asList(veer).indexOf(14);
System.out.println("my array at position 14 is :" + (a));
Run Code Online (Sandbox Code Playgroud) java ×8
arrays ×5
arraylist ×2
algorithm ×1
casting ×1
collections ×1
eclipse ×1
frameworks ×1
list ×1
primitive ×1