`
qing_gee
  • 浏览: 121514 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

Java中需要注意的一些案例

    博客分类:
  • Java
阅读更多

在编写Java代码中,我们或多或少会遇到下面的一些案例,对于这些情况,我们怎么做?那么接下来我介绍一些方法,大家可以看一下:

1.判断数组{"a","b","c","d"}是否包含有"a",见以下代码,你喜欢用哪一种呢,我推荐使用ifcontainsByArrays,因为该方法内部更严谨一些。

public static void main(String[] args) {
		String [] strs = {"a","b","c","d"};
		
		Test t = new Test();
		System.out.println(t.ifcontains(strs, "a"));
		
		System.out.println(t.ifcontainsByArrays(strs, "a"));
	}
	
	public boolean ifcontains(String [] strs, String str) {
		for (String s : strs) {
			if (s.equals(str)) {
				return true;
			}
		}
		return false;
	}
	
	public boolean ifcontainsByArrays(String [] strs, String str) {
		// 注意:Arrays.asList()方法返回的是 java.util.Arrays.ArrayList而不是java.util.ArrayList
		return Arrays.asList(strs).contains(str);
	}

 2.在循环中删除一个列表中的元素,见如下代码,我建议使用removeByIterator方法,因为不需要再创建新的list。

public static void main(String[] args) {
		List<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
		List<String> list1 = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
		
		Test1 t = new Test1();
		for (String s : t.removeByIterator(list, "c")) {
			System.out.print(s);
		}
		System.out.println();
		System.out.println("----------------------------");
		for (String s : t.removeByNewList(list1, "c")) {
			System.out.print(s);
		}
	}
	
	public List<String> removeByNewList(List<String> list, String str) {
		List<String> newList = new ArrayList<String>();
		for (String s : list) {
			if (!s.equals(str)) {
				newList.add(s);
			}
		}
		
		return newList;
	}
	
	public List<String> removeByIterator(List<String> list, String str) {
		Iterator<String> iterator = list.iterator();
		while (iterator.hasNext()) {
			String s = iterator.next();
			if (s.equals(str)) {
				// 移除迭代器返回的元素
				iterator.remove();
			}
		}
		
		return list;
	}

 暂时先列举两个,有时间的话,继续

 

2
2
分享到:
评论
6 楼 qing_gee 2014-07-06  
cs6641468 写道
ArrayList本来就用remove方法,从后向前,发现相同的remove掉就行了。 干啥还要借助Iterator



没有认真看你的回复,sorry,谢谢的你提议。
5 楼 qing_gee 2014-07-06  
laozhao 写道
fly_宇光十色 写道
qing_gee 写道
cs6641468 写道
ArrayList本来就用remove方法,从后向前,发现相同的remove掉就行了。 干啥还要借助Iterator

你自己动手写写代码就知道你的想法正确不

从后向前没有问题,如果是从前往后的话会出错


同意,这样OK。好久没写了,不知道有没有语法错误。大致这样。

public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
List<String> list1 = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));

Test1 t = new Test1();
for (String s : t.removeByItSelf(list, "c")) {
System.out.print(s);
}
}

public List<String> removeByItSelf(List<String> list, String str) {
int i = list.size;
for (i,i>=0,i--) {
if (!s.equals(str)) {
list.remove(s);
}
}

return newList;
}




楼主知错就改,我本来以为你说的是顺序的remove,如果倒序remove的话,的确list的大小改变了也无所谓。赞。
具体写法参考以下

List<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
int size = list.size();
for (int i = size - 1; i >= 0; i--) {
if (list.get(i).equals("c")) {
list.remove(i);
}
}
4 楼 laozhao 2014-07-04  
fly_宇光十色 写道
qing_gee 写道
cs6641468 写道
ArrayList本来就用remove方法,从后向前,发现相同的remove掉就行了。 干啥还要借助Iterator

你自己动手写写代码就知道你的想法正确不

从后向前没有问题,如果是从前往后的话会出错


同意,这样OK。好久没写了,不知道有没有语法错误。大致这样。

public static void main(String[] args) {
List<String> list = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));
List<String> list1 = new ArrayList<String>(Arrays.asList("a", "b", "c", "d"));

Test1 t = new Test1();
for (String s : t.removeByItSelf(list, "c")) {
System.out.print(s);
}
}

public List<String> removeByItSelf(List<String> list, String str) {
int i = list.size;
for (i,i>=0,i--) {
if (!s.equals(str)) {
list.remove(s);
}
}

return newList;
}

3 楼 fly_宇光十色 2014-07-04  
qing_gee 写道
cs6641468 写道
ArrayList本来就用remove方法,从后向前,发现相同的remove掉就行了。 干啥还要借助Iterator

你自己动手写写代码就知道你的想法正确不

从后向前没有问题,如果是从前往后的话会出错
2 楼 qing_gee 2014-07-04  
cs6641468 写道
ArrayList本来就用remove方法,从后向前,发现相同的remove掉就行了。 干啥还要借助Iterator

你自己动手写写代码就知道你的想法正确不
1 楼 cs6641468 2014-07-04  
ArrayList本来就用remove方法,从后向前,发现相同的remove掉就行了。 干啥还要借助Iterator
Global site tag (gtag.js) - Google Analytics