检查列表是否包含相同的元素,然后在另一个列表中获取一些值

时间:2017-05-24 00:11:45

标签: java list

我有两个列表,其中包含相同的对象。

List<Object1> list1;
List<Object1> list2;

for (Object1 objectItem : list1.getList()) {
    // I want to check if objectItem exists in list2 without using another for loop and then compare their other values
    // Something like list2.getList().contains(objectItem).getThisValueMethod();
}

这可能吗?

1 个答案:

答案 0 :(得分:2)

考虑这个示例import UIKit import SpriteKit import PlaygroundSupport let radius = CGFloat(100) let sceneSize = CGSize(width: 640, height: 480) let sceneView = SKView(frame: CGRect(origin: CGPoint.zero, size: sceneSize)) let scene = SKScene(size: sceneSize) scene.backgroundColor = UIColor.black let topRightPath = arcSegment(radius: radius, strokeWidth: 18, gapWidth: 25) let topRightPathNode = SKShapeNode(path: topRightPath) topRightPathNode.fillColor = SKColor.white topRightPathNode.position = CGPoint(x: 320, y: 240) topRightPathNode.lineWidth = 0 scene.addChild(topRightPathNode) var reflectOnY = CGAffineTransform(scaleX: 1.0, y: -1.0) let bottomRightPath = topRightPath.copy(using: &reflectOnY)! let bottomRightPathNode = SKShapeNode(path: bottomRightPath) bottomRightPathNode.fillColor = SKColor.orange bottomRightPathNode.position = CGPoint(x: 320, y: 240) bottomRightPathNode.lineWidth = 0 scene.addChild(bottomRightPathNode) var reflectOnX = CGAffineTransform(scaleX: -1.0, y: 1.0) let bottomLeftPath = bottomRightPath.copy(using: &reflectOnX)! let bottomLeftPathNode = SKShapeNode(path: bottomLeftPath) bottomLeftPathNode.fillColor = SKColor.green bottomLeftPathNode.position = CGPoint(x: 320, y: 240) bottomLeftPathNode.lineWidth = 0 scene.addChild(bottomLeftPathNode) let topLeftPath = bottomLeftPath.copy(using: &reflectOnY)! let topLeftPathNode = SKShapeNode(path: topLeftPath) topLeftPathNode.fillColor = SKColor.blue topLeftPathNode.position = CGPoint(x: 320, y:240) topLeftPathNode.lineWidth = 0 scene.addChild(topLeftPathNode) sceneView.presentScene(scene) PlaygroundPage.current.liveView = sceneView PlaygroundPage.current.needsIndefiniteExecution = true func arcSegment( radius: CGFloat, strokeWidth: CGFloat, gapWidth: CGFloat) -> CGPath { let halfStrokeWidth = strokeWidth / 2.0 let outerRadius = radius + halfStrokeWidth let innerRadius = radius - halfStrokeWidth let halfGap = gapWidth / 2.0 let outerStartAngle = CGFloat(atan2(sqrt(outerRadius * outerRadius - halfGap * halfGap), halfGap)) let outerEndAngle = CGFloat(atan2(halfGap, sqrt(outerRadius * outerRadius - halfGap * halfGap))) let innerStartAngle = CGFloat(atan2(halfGap, sqrt(innerRadius * innerRadius - halfGap * halfGap))) let innerEndAngle = CGFloat(atan2(sqrt(innerRadius * innerRadius - halfGap * halfGap), halfGap)) let leftEndAngle = CGFloat(atan2(sqrt(radius * radius - halfGap * halfGap), halfGap)) let leftEndCapPoint = CGPoint(x: radius * cos(leftEndAngle), y: radius * sin(leftEndAngle)) let rightEndCapPoint = CGPoint(x: leftEndCapPoint.y, y: leftEndCapPoint.x) let path = CGMutablePath() path.addArc(center: CGPoint.zero, radius: outerRadius, startAngle: outerStartAngle, endAngle: outerEndAngle, clockwise: true) path.addArc(center: rightEndCapPoint, radius: halfStrokeWidth, startAngle : 0, endAngle : CGFloat.pi, clockwise: true) path.addArc(center: CGPoint.zero, radius: innerRadius, startAngle: innerStartAngle, endAngle: innerEndAngle, clockwise: false) path.addArc(center: leftEndCapPoint, radius: halfStrokeWidth, startAngle : 3.0 * CGFloat.pi / 2.0, endAngle : CGFloat.pi / 2.0, clockwise: true) path.closeSubpath() return path } ):

Explanation in Comments