⑴ java 判断一个数组中是否有重复的元素
使用一个临时list,借助list.contains判断当前数组的值是否存在于list中,如果不存在则加入到list中,如果存在则记录出来。有点像把一个篮子中的桌球放到另一个空篮子中,如果篮子里面已经有的就不要再放进去了,没有的,一个个放进去。说到底就是个遍历和存在性判断问题。
⑵ java判断数组中是否包含
importjava.util.Arrays;
publicclassTest_Array{
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
int[]test={1,6,3,8,9,2,5};
Arrays.sort(test);//首先对数组排序
intresult=Arrays.binarySearch(test,5);//在数组中搜索是否含有5
System.out.println(result);//这里的结果是3
}
}
上面是一种办法 当然办法还多 比如你还可以把它 转成 list容器 然后调用 contains方法
甚至你可以自己封装个方法 循环一遍...
⑶ 在Java中判断数组中包含某个元素的几种方式的比较
直接上代码:
package test.contain.lishaojie;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class TestContain {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] arr = new String[] { "DD", "CC", "DD", "FF", "KK"};
String target ="A";
int times = 1000;//次数
//转换成list方式
long startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByList(arr, target);
}
long endTime = System.currentTimeMillis();
long ration = endTime - startTime;
System.out.println("list方式: " + ration / 1000000);
//转换成set方式
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
BySet(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("set方式: " + ration / 1000000);
//直接循环方式
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByForLoop(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("循环方式: " + ration / 1000000);
//二分法查找
startTime = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
ByArraysBinarySearch(arr, target);
}
endTime = System.currentTimeMillis();
ration = endTime - startTime;
System.out.println("二分法查找: " + ration / 1000000);
}
public static boolean ByList(String[] arr, String targetValue) {
return Arrays.asList(arr).contains(targetValue);
}
public static boolean BySet(String[] arr, String targetValue) {
Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);
}
public static boolean ByForLoop(String[] arr, String targetValue) {
for(String s: arr){
if(s.equals(targetValue))
return true;
}
return false;
}
public static boolean ByArraysBinarySearch(String[] arr, String targetValue) {
int a = Arrays.binarySearch(arr, targetValue);
if(a > 0)
return true;
else
return false;
}
}
运行结果如下:
list方式: 5
set方式: 22
循环方式: 2
二分法查找: 3
经过大量数据测试循环方式效率最高,其次是二分法,最后是list,和set因为因为将数组压入Collection类型中,首先要将数组元素遍历一遍,然后再使用集合类做其他操作。但是list方式明显要比set方式快很多,这是为什么呢?直接看代码:首先
@SafeVarargs
@SuppressWarnings("varargs")
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
返回的是ArrayList所以set方式还要进行一次操作将ArrayList转换成set,
public HashSet(Collection<? extends E> c) {
map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
addAll(c);
}
之一addAll方法:
public boolean addAll(Collection<? extends E> c) {
boolean modified = false;
for (E e : c)
if (add(e))
modified = true;
return modified;
}
又一次进行了选环,所以效率比较低,binggo
⑷ (java)搜索一个字符数组中是否存在某个字符。如存在,返回该字符在数组中第一次出现的位置,否则返回-1.
public class Test {
public static void main(String[] args) {
String[] arr=new String[]{"a","b"};
System.out.println(find(arr, "c"));
}
public static int find(String[] arr,String str){
boolean flag=false;
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals(str)) {
flag=true;
return i;
}
}
if (flag==false) {
return -1;
}
return -1;
}
}
⑸ 在Java中,如何检测一个数组中是否包含某一个数据
在Java中,你需要确定一个数组是否包含特定的数据,有多种方法可供选择。以下是四种常见的实现策略:首先,你可以使用for循环遍历数组,逐个比较元素,如以下代码所示:
1.使用for循环
publicstaticbooleanuseLoop(String[]arr,StringtargetValue){
for(Strings:arr){
if(s.equals(targetValue)){
returntrue;
}
}
returnfalse;
}
另一种方法是将数组转换为List,然后利用List的contains方法,代码如下:
2.转换为List并使用contains方法
publicstaticbooleanuseList(String[]arr,StringtargetValue){
returnArrays.asList(arr).contains(targetValue);
}
Set集合也可以用来检测元素是否存在,由于Set不允许重复元素,所以这种方法适合于不需要重复元素的场景:
3.使用Set
publicstaticbooleanuseSet(String[]arr,StringtargetValue){
Set returnset.contains(targetValue); } 最后,如果你的数组是有序的,可以使用Arrays.binarySearch()方法进行二分查找,但请注意,它只适用于有序数组: 4.使用Arrays.binarySearch()方法(适用于有序数组) (String[]arr,StringtargetValue){ inta=Arrays.binarySearch(arr,targetValue); returna>=0; } 总的来说,选择哪种方法取决于你的具体需求,如是否需要处理重复元素,数组是否有序等。在实际编程时,可以根据这些方法的优缺点来作出决定。
⑹ 在Java中,如何检测一个数组中是否包含某一个数据 在Java中,检测一个数组是否包含某一个数据,通常有四种方法: (1)for循环 (2)转换为List,调用Arrays.asList(arr).contains方法 (3)使用Set (4)使用Arrays.binarySearch()方法 下面为上述四种方法的具体代码实现: 1、使用for循环 publicstaticbooleanuseLoop(String[]arr,StringtargetValue){ for(Strings:arr){ if(s.equals(targetValue)) returntrue; } returnfalse; } /iknow-pic.cdn.bcebos.com/d62a6059252dd42a816ca8e00e3b5bb5c9eab810"target="_blank"title="点击查看大图"class="illustration_alink">/iknow-pic.cdn.bcebos.com/d62a6059252dd42a816ca8e00e3b5bb5c9eab810?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/d62a6059252dd42a816ca8e00e3b5bb5c9eab810"/> 2、转换为List,调用Arrays.asList(arr).contains方法 publicstaticbooleanuseList(String[]arr,StringtargetValue){ returnArrays.asList(arr).contains(targetValue); } /iknow-pic.cdn.bcebos.com/8cb1cb1349540923258eca359f58d109b2de4992"target="_blank"title="点击查看大图"class="illustration_alink">/iknow-pic.cdn.bcebos.com/8cb1cb1349540923258eca359f58d109b2de4992?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/8cb1cb1349540923258eca359f58d109b2de4992"/> 3、使用Set publicstaticbooleanuseSet(String[]arr,StringtargetValue){ SetStringset=newHashSetString(Arrays.asList(arr)); returnset.contains(targetValue); } /iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef2dea016df0faaf51f2de66a9"target="_blank"title="点击查看大图"class="illustration_alink">/iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef2dea016df0faaf51f2de66a9?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/e61190ef76c6a7ef2dea016df0faaf51f2de66a9"/> 4、使用Arrays.binarySearch()方法 特别说明:binarySearch()二分查找仅适用于有序数组,如果不是有序数组,则报异常 (String[]arr,StringtargetValue){ inta=Arrays.binarySearch(arr,targetValue); if(a0){ returntrue; }else{ returnfalse; }} /iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d"target="_blank"title="点击查看大图"class="illustration_alink">/iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/8ad4b31c8701a18bec0bbb04932f07082938fe9d"/> (6)java数组中存在扩展阅读: Java种List列表的contains方法: 该方法是通过遍历集合中的每一个元素并用equals方法比较是否存在指定的元素。 publicbooleancontains(Objecto){ IteratorEit=iterator(); if(o==null){ while(it.hasNext()) if(it.next()==null) returntrue; }else{ while(it.hasNext()) if(o.equals(it.next())) returntrue; } returnfalse; } /iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec"target="_blank"title="点击查看大图"class="illustration_alink">/iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto"esrc="https://iknow-pic.cdn.bcebos.com/64380cd7912397dd61e8334f5482b2b7d1a287ec"/> ⑺ java中怎么判断一个字符串是否存在数组中
有2种方法,第一种就是直接循环数组,逐个进行判断。第二种就是先将数组转换成list,再使用list的contains方法进行匹配判断。 ⑻ java中数组有哪些
Java中的数组有以下几类:
String[] arrStr = {"aser", "abc"};
for (String str : arrStr) {
if (str.contains("abc")) {
return true;
}
}
public static void main(String[] args) {
String aa []={"aaa","bbb","ccc","ddd"};
List<String> list=Arrays.asList(aa);
if(list.contains("aa")){
System.out.println("有aa");
}else{
System.out.println("没有aa");
}
}
一、基本类型数组(Primitive Arrays)
在Java中,基本类型的数组是固定大小的数组,其元素类型是固定的。Java支持以下基本类型的数组:int数组、char数组、float数组、double数组、boolean数组等。此外,Java也支持其他基本数据类型对应的包装类数组,如Integer数组等。这些基本类型的数组可以存储相应的基本数据类型的数据。例如,int数组可以存储整数数据。
二、对象数组(Object Arrays)
在Java中,对象数组是一种特殊的数组类型,可以存储任何类型的对象引用。对象数组的元素可以是任何对象类型,包括自定义的类实例。创建对象数组时,需要指定元素的类型为Object。例如,Object[] arr = new Object[10];表示创建一个可以存储10个对象的对象数组。需要注意的是,对象数组中存储的是对象的引用,而非对象本身。
三、多维数组(Multi-dimensional Arrays)
除了上述的基本类型数组和对象数组外,Java还支持多维数组。多维数组可以看作是一个数组的数组的数组,具有多个维度。常见的多维数组有二维数组和三维数组等。多维数组的创建和使用方式较为复杂,需要指定每个维度的长度和元素类型。例如,int[][] matrix表示一个二维整型数组(矩阵)。每个元素又是一个整型数组,可以用于存储行内数据。二维数组广泛应用于矩阵运算和数据处理等场景。通过多维数组的嵌套循环可以方便地访问和操作每个元素。在Java中创建多维数组的语法较为复杂,需要注意每个维度的初始化和访问方式。多维数组的每一个维度都有自己独立的存储空间和管理方式。在进行操作时,需要根据具体的需求选择合适的维度进行访问和操作。此外,多维数组的创建和使用还需要考虑内存分配和性能优化等问题。因此在实际应用中需要根据具体情况进行选择和实现。