如果是无序的集合, 那么不存在位置这个说法
如果是有序的集合,
以ArrayList为例, 那么插入元素,没有指定位置,那么集合长度-1 .就是插入的下标
如果指定了位置,那么指定的位置就是插入的下标啊 ,如果指定位置大于集合长度,会抛出异常
参考代码
import java.util.ArrayListpublic class ListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>()
//自带的添加元素的方法
list.add("天涯")
list.add("明月")
list.add(1,"晴天")
//使用自定义函数 进行添加元素
int a = myAdd(list, "令狐冲")
System.out.println(a)
int b = myAdd(list,2,"郭芙蓉")
System.out.println(b)
System.out.println(list)
}
//向集合尾部插入元素
private static int myAdd(ArrayList<String> list, String e) {
list.add(e)//向尾部加入一个元素
return list.size() - 1//返回最后一个元素的下标即可
}
//向集合指定位置插入元素
private static int myAdd(ArrayList<String> list, int index, String e) {
list.add(index, e)//向指定位置加入1个元素
return index//返回指定的位置
}
}
测试结果
32
[天涯, 晴天, 郭芙蓉, 明月, 令狐冲]
没有此函数可以如下解决:
搜索数组元素,
for(iii)if(cA[i]=='X')return i//i就是下标
或用指针
for(iii)if(*cA[i]++ == 'X')return i
或用指针运算
pcA是元素的位置指针
i= (pcA - cA)/ sizeof( (int) or (float) 等数组数据类型) )
一定要用模板吗?对于结构体元素查找,可能会用到根据其中几个元素来比较,或者所有元素来比较
所以最好可以专门写函数来查找
比如
int find(struct stu *array, int value)
{
int i
for(i=0i<lengthi++)//这个length可以通过全局变量 也可以改成从参数传过来
if(array[i].m == value) break
return i
}
这个是查找m的
如果对于结构体查找的元素是固定的,比如值查找m,或者只有当所有元素值相等时才算找到
可以重载 *** 作符==
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)