
fileListBinarySearch(aFile)
for(int i=0;i<fileListCount;i++)
{
ConsoleWriteLine(i);
}
List <string> fileList = new List<string>();
foreach (string aFile in fileList)
{
int idx= fileListIndexOf(aFile);//获取当前aFile的索引
ConsoleWriteLine(idx);//输出度aFile的索引
}
ConsoleReadLine();//屏幕停留
扩展资料:
字符数组的定义方式与一维数组、二维数组的定义方式类似,只不过数组的类型是char型。
例如:char s1;
定义了一个元素个数为6、数组名为S的字符数组,该字符数组中可以存放6个字符型数据。
例如:char s2;
定义了一个二维字符数组S,该数组可以存放3x6个字符型数据。
字符数组的初始化,即在声明的时候在后边直接赋值一个字符串。
如:char name[9]="xiaogang";
但是如果在声明语句以外的位置,就无法直接对整个数组直接赋值了,要把strcpy这个函数来实现。
而在这个字符数组中,包含了8个字符数据,即为八个元素,name[i]即为这个字符数组的元素名称,其中i可取0至8。
参考资料来源:百度百科-字符数组元素名称
List是有序的集合接口 该接口定义了 得到指定索引位置元素的方法
get(int index) // 返回列表中指定位置的元素。以较为常用的ArrayList为例, ArrayList的底层就是用我们熟悉的数组实现的
参考代码
import javautilArrayList;public class ListDemo {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
listadd("张三");//添加元素
listadd("赵四");
listadd("王五");
String name =listget(2);// 和数组下标一样, 也是从0开始, 所以下标2就代表第3个元素
Systemoutprintln(name);// 输出 王五
}
}
具体步骤如下:
1、用list来演示,安装好python与pycharm之后,打开pycharm,新建Test_Listpy。
2、定义lista=('A','B','C','D','E'),使用len函数来判断数组长度,ALT+F10执行后可以看到结果是5,注意获取列表的值用数组名+[序号],例如想要获取第一个值'A',正确的写法是pirnt(lista[0]),注意中括号,且序号是0,数组是自然数排序,第一个序号是0。
3、通过数组名+[序号]可以获取数组里指定位置的元素值,有个前提是指定位置必须小于数组长度,以本例来讲,指定位置必须小于5,如果大于5,就会报长度错(out of range)。
4、在实际应用中,我们经常碰到复杂的数组,例如Listb={'A':0,'B':1,'C':2,'D':3,'E':4},注意我用的是大括号{},同意获取长度,发现长度仍然是5。
5、复杂数组想要获取正确的结果,指定的位置必须是数组索引,例如想要指定A得几分,要用数组名+索引名,写法是print(Listb['A']),即可获取数组中的元素。
一、list
list是python内置的有序的列表,可以随时添加和删除其中的元素
1、 定义
list_name = ["param1","param2","param3"]
2、访问
1)用索引来访问,索引从0开始
索引不可以越界,否则会报错,最后一个元素的索引是len(city) - 1
2)还可以从后开始访问 最后一个元素的索引为-1 依次类推,第一个元素的索引为-len(city)
>>> city[-1]
>>> '广州'
3、元素的追加
4、元素的插入
在city的索引1处增加 重庆
>>> cityinsert(1,'重庆')
>>> city
>>> ['北京', '重庆', '上海', '广州', '南京']
5、元素的删除
1)删除末尾
2)删除指定位置元素 pop(i),i为索引值
6、元素的替换
7、二维list
访问的时候 我们就可以直接 city[1][0] city[1][1]来访问 其中的元素值
二、tuple(元组)
tupe和list的最大的区别就是 tuple一旦被创建 就无法修改
1、定义
2、访问
和list是一样的 country[0],country[1]。由于tuple是不可变的,所以没有append 和insert 函数
3、 一个元素的tuple
我们发现 当tuple的元素只有一个元素的时候,python会认为括号就是小括号的功能,就会按照整数或者字符串解析,为了解决这个问题,python规定这种情况 在后面加一个逗号','就可以
4、 tuple的指向不变
你会惊讶,怎么可以变了呢
其实在python内部,c[0],c[1]指向 1 和 2,而c[2]是指向的一个list对象,其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变
同:三个类都是实现了List接口,存储数据的特点相同:存储有序的、可重复的数据
异:
ArrayList:是用的最多得,线程不安全所以效率高。底层使用Object[] elementData数组存储
LinkedList:对于平凡的插入、删除 *** 作效率更高,因为底层是双向链表(ArrayList的话要一个个移,但是查找多还是
ArrayList好)
Vector:10的时候出的古老实现类,其他包括List本身都是12出的;线程安全效率慢,其他和ArrayList差不多底层也是数组。接班不用
ArrayList:
jdk70的时候:
ArrayList list = new ArrayList();// 底层创建了长度是10的数组
当添加的元素数量超过数组容量了就扩容, 默认情况下扩容15倍 ,并复制到新数组里。(和StringBuilder很像)
建议开发中使用带参数的构造器:
new ArrayList(int capacity)
jdk80的时候:
new ArrayList();//底层初始化为{},第一次add时才创建长度为10的数组,其他一样
好处:延迟数组的创建,节省内存
Vector:
如果没给capacity一开始也初始化长度为10的数组(类ArrayList70),但是扩容的时候扩为原来的2倍
Linked list = new LinkedList();//内部声明了Node类型的first和last属性,默认值为null
listadd(“something”);//创建node并将数据装到node里
其中Node定义为:
//是linkedlist的一个内部类
private static class Node<E>{
E item;//数据
Node<E> next;
Node<E> prev;
Node(Node<E> prev,Node<E> next,Node<E> next){
thisitem = element;
thisnext = next;
this,prev = prev
}
}
List除了从Collection集合继承的方法外,List 集合里添加了一些根据索引来 *** 作集合元素的方法。
void add(int index, Object ele):在index位置插入ele元素
boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
Object get(int index):获取指定index位置的元素
int indexOf(Object obj):返回obj在集合中首次出现的位置,找不到就-1
int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置,找不到就-1
Object remove(int index):移除指定index位置的元素,并返回此元素
Object set(int index, Object ele):设置指定index位置的元素为ele
List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
总结常用方法:
增:add(Object)
删:remove(Object)/remove(index)
改:set(index,Object)
查:get(index)
插入:add(index,Object)
长度:size()
遍历:
1iterator
2for(Object o : list)
3for(int i =0;i<listsize();i++)
这是foreach的
using System;
using SystemCollections;
namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
ArrayList arraylist = new ArrayList();
arraylistAdd("Hello");
arraylistAdd("World");
arraylistAdd("!");
foreach (string s in arraylist)
{
ConsoleWrite( "{0}\n", s );
}
}
}
}
ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了动态的增加和减少元素,实现了ICollection和IList接口,灵活的设置数组的大小等好处。
List 接口的大小可变数组的实现,位于API文档的javautilArrayList<E>。实现了所有可选列表 *** 作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来 *** 作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)
size、isEmpty、get、set、iterator 和 listIterator *** 作都以固定时间运行。add *** 作以分摊的固定时间 运行,也就是说,添加 n 个元素需要 O(n) 时间。其他所有 *** 作都以线性时间运行(大体上讲)。与用于 LinkedList 实现的常数因子相比,此实现的常数因子较低。
把List看成数组,用下标形式取。
例如:取第一个元素:List<String> list =new List<String>();String string=list[0];
函数解析:String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 SystemChar 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的,
你可以这么写:
for(int i=0;i<listsize();i++)
{
UserForm user=(UserForm)listget(i);
String password=usergetPassword;
}
以上就是关于c# 如何获取List中当前元素的索引全部的内容,包括:c# 如何获取List中当前元素的索引、Java中list读取第X位、如何访问数组中的元素等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)