在JAVA中如何从数组中删除一个元素的程序如下:
package org.usc.action;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main(String[] args) {
String[] str={"张三","李四","王五","宋六","赵七","朱八","何九","田十"};
List
if(list.contains("张三"))
{//加入集合中包含这个元素
///这个时候我们直接移除会报错,所以我们要转换为Arraylist
//list.remove("张三");
List
arrayList.remove("张三");
for(String str1:arrayList ){
System.out.print(str1+",");}
}}
部分解释:
1、remove这些method时出现java.lang.UnsupportedOperationException异常。
2、这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList, remove,add等method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
3、ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等, 所以throw UnsupportedOperationException。
扩展资料:
因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集。
Java允许扩展编译时检查潜在类型不匹配问题的功能。Java要求显式的方法声明,它不支持C风格的隐式声明。
异常处理是Java中使得程序更稳健的另一个特征。异常是某种类似于错误的异常条件出现的信号。使用try/catch/finally语句,程序员可以找到出错的处理代码,这就简化了出错处理和恢复的任务。
del函数的作用是删除数组a中的指定元素x,n为数组a的元素个数。函数的返回值,为删除元素后的有效元素个数(数组中可能有重复元素)。
函数的原型为:
int del (int a[10],int n,int x)
(1)请实现这个函数,并完成测试。
[参考解答]
[cpp] view plain copy
#include
int del(int a[],int n, int x);
int main( )
{
int a[20]= {86,76,62,58,77,85,92,80,96,88,77,67,80,68,78,87,64,59,61,76};
int i, n;
n = del(a, 20, 77);
printf("剩余 %d 个:\n", n);
for(i=0; i
printf("%d ", a[i]);
printf("\n");
return 0;
}
int del(int a[],int n, int x) //删除长度为n的a数组中值为x的元素
{
int p=0, q=0; //用p和q两个变量
while (q
{
if(a[q]!=x) //只有当元素值不等于x才往p标识的位置上“搬”
{
a[p]=a[q];
p++;
}
q++;
} //最后的效果,等于x的元素都没有“搬”过来,它们被“覆盖”了,也即被删除了
return p; //p代表的,就是删除后的元素个数
}
[参考解答]
[cpp] view plain copy
#include
int del(int a[],int n, int x);
int main( )
{
int a[20]= {58, 59, 61, 62, 64, 67, 68, 76, 77, 77, 77, 80, 80, 85, 86, 87, 88, 88, 92, 96};
int i, n;
n = del(a, 20, 77);
printf("剩余 %d 个:\n", n);
for(i=0; i
printf("%d ", a[i]);
printf("\n");
return 0;
}
int del(int a[],int n, int x) //删除长度为n的a数组中值为x的元素
{
int p=0, q;
while (a[p]
p++;
q=p; //阶段②:p将标记住这个待删除的位置
while(a[q]==x && q
q++;
while(q
a[p++]=a[q++]; //阶段③:将要保留的元素,直接“覆盖”到p标记住的位置,逐个赋值,结果就是将等于x的元素删除了
return p; //p代表的,就是删除后的元素个数
}
// 写一个泛型方法可以适应大部份类型的需求。
// ----------------------------------------------
/**
* @param
* @param arrs 需要删除元素的数组。
* @param index 需要删除的元素的索引(出界时抛异常)。
* @return 指定类型的新数组。
*/
public static
int len = arrs.length;
if(index < 0 || index >= len) {
throw new IllegalArgumentException("索引出界");
}
List
for(int i = 0; i < len; i++) {
if(i != index) {
list.add(arrs[i]);
}
}
// 这里将改变传入的数组参数 arrs 的值
arrs = list.toArray(arrs);
return java.util.Arrays.copeOf(arrs, arrs.length - 1);
}