Java:String.length()>;0和Array.size()>;0速记?

Java:String.length()>;0和Array.size()>;0速记?,java,arrays,shorthand,Java,Arrays,Shorthand,一定有办法把这段代码速记下来。我一直在用它,它一点也不漂亮 ArrayList<String> items = new ArrayList<String>(); items.add( "Foo" ); items.add( "Bar" ); String zxc; 但是当使用索引时,必须有一种方法来简化它 for( int i = 0; i < items.size(); i++ ) { zxc = items.get( i ); } for(int

一定有办法把这段代码速记下来。我一直在用它,它一点也不漂亮

ArrayList<String> items = new ArrayList<String>();
items.add( "Foo" );
items.add( "Bar" );

String zxc;
但是当使用索引时,必须有一种方法来简化它

for( int i = 0; i < items.size(); i++ ) {
    zxc = items.get( i );
}
for(int i=0;i
不,没有。 唯一可以做的小调整是定义大小变量:

int iSize = items.size();
for( int i = 0; i < iSize; i++ ) {}
int-iSize=items.size();
对于(inti=0;i

这样就不必在每次迭代中都运行size()方法。此外,这是最基本的/短手循环,你应该知道如何在<2秒的时间内写出这些行,你可以随时制作自己的索引

int i=0;
for( String s : items ) {
   doStuff();
   i++;
}

呢!String.isEmpty()
!List.isEmpty()

String
List
定义了一个
isEmpty()
方法,您只需对其求反即可判断长度或大小是否大于0

String s = "asdf";
List<String> l = Arrays.asList("one", "two");

if (!s.isEmpty())
    System.out.println("String has characters.");
if (!l.isEmpty())
    System.out.println("List has elements.");
String s=“asdf”;
listl=Arrays.asList(“一”、“二”);
如果(!s.isEmpty())
System.out.println(“字符串包含字符”);
如果(!l.isEmpty())
System.out.println(“列表包含元素”);

这两个循环都不起作用。你想做什么?不幸的是没有。如果你真的需要索引,你必须用传统的
来表示
。这个问题的标题在给出描述后就没有意义了。您在哪里测试长度大于0的字符串?除了缩短代码之外,我不打算做任何事情。这只是一个例子。我将为它添加逻辑。每个
循环的
意味着更简单的方法。甚至(int I=0,n=items.size();I
但我认为JIT编译器本身会进行这样的优化…@Benjamin您的解决方案更好,因为它将
n
的范围限制在
for
循环中。@Ajk\P速记循环习惯用法的主要目的不是节省键入,而是使代码更加明确,并消除类似这样的错误:
for(int i=0;i
我理解每次不运行size()方法的好处,但它会生成更多代码。这回答了标题中的问题,但问题主体与此不同。在阅读之前先考虑一下身体,这很好。有什么方法可以添加项目吗?像l.add(item)@JonasB
Arrays.asList()
返回指定数组支持的固定大小列表。如果需要可修改的
列表
,请使用
ArrayList
List l=new ArrayList().True。但这段代码可能和我们所同意的一样长。但我认为任何人都能提供的是替代方案,所以我想我当然会提供一个。我可能不是唯一一个寻找替代品的人。
String s = "asdf";
List<String> l = Arrays.asList("one", "two");

if (!s.isEmpty())
    System.out.println("String has characters.");
if (!l.isEmpty())
    System.out.println("List has elements.");